我正在尝试从form:select标记中预选一些值。那么,让我们来看看下面的示例类:
public class Post
{
private boolean anonymize;
private boolean videoRequired;
/* getters, setters */
}如您所见,有两个布尔字段。我在JSP中使用的第一个例子如下:
<label>Anonymize</label>
<form:select path="anonymize" id="anonymize" class="form-control">
<form:option value="true" label="Yes" selected="${ (post.anonymize) ? true : ''}" />
<form:option value="false" label="No" selected="${ (!post.anonymize) ? true : ''}" />
</form:select>当我检查该元素时,结果是(假设anonymize是true):
<select id="anonymize" name="anonymize" class="form-control">
<option selected="true" value="true">Yes</option>
<option value="false">No</option>
</select>到目前一切尚好。
现在,我对我的另一个布尔字段videoRequired做同样的事情。首先是JSP:
<label>Video required</label>
<form:select path="videoRequired" id="videoRequired" class="form-control">
<form:option value="true" label="Yes" selected="${ (post.videoRequired) ? true : '' }" />
<form:option value="false" label="No" selected="${ (!post.videoRequired) ? true : '' }" />
</form:select>这将导致(同样,假设videoRequired也是true):
<label>Video required</label>
<select id="videoRequired" name="videoRequired" class="form-control">
<option selected="true" value="true">Yes</option>
<option value="false" selected="selected">No</option>
</select>看看这一行:<option value="false" selected="selected">No</option>
这怎么会发生呢?我已经坚持了几个小时了,我甚至尝试过使用<c:choose>标记,然后对selected属性进行硬编码--它给了我完全相同的奇怪结果。有人能解释一下我哪里出了问题吗?因为我在这两个领域都做了同样的事情,所以我正在努力工作,但是其中一个仍然有效,另一个没有。顺便说一下,当我查看mysql时,两个字段都被正确设置了。
发布于 2016-11-03 14:33:03
为了预选一个form:select元素,可以在返回视图的控制器方法中将相应的变量anonymize设置为true。
@Controller
public String getForm(ModelMap model, Post post){
post.setVideoRequired(true);
return "view-name";
}https://stackoverflow.com/questions/40403341
复制相似问题