形式奇怪的结果:形式选项:选择

时间:2016-11-03 13:53:40

标签: java spring forms jsp select

我正在尝试从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>

当我检查该元素时,导致(假设anonymizetrue):

<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时,两个字段都已正确设置。

1 个答案:

答案 0 :(得分:1)

为了预先选择form:select元素,您可以在返回视图的控制器方法中将相应的变量anonymize设置为true。

@Controller
public String getForm(ModelMap model, Post post){
    post.setVideoRequired(true);
    return "view-name";
}