如果条件为true,则向spring form元素添加属性

时间:2014-04-03 13:44:04

标签: java spring jsp

所以我收到了这个复选框:

<form:checkbox id="someCheckbox" path="someCheckbox"/>

现在我想添加一个属性 - 如果条件为真,则特别添加checked="checked"。如果不将整个元素包装在if语句中,这可能吗?

基本上我想要的(导致错误):

<form:checkbox id="someCheckbox" path="someCheckbox" ${isChecked ? 'checked=checked' : ''}/>

注意添加属性checked=""并使其值有条件也不起作用,因为在现代浏览器中将checked = false或checked =''视为已选中。

4 个答案:

答案 0 :(得分:2)

这适用于Tomcat 7 / JSP 2.2 / JSTL 1.2:

<form:checkbox id="someCheckbox" path="someCheckbox" 
    <c:if test="${isChecked}">
        checked="checked"
    </c:if> 
/>

使用问题中的三元运算符应该使用JSP&gt; = 2.0:

<form:checkbox id="someCheckbox" path="someCheckbox" 
    ${isChecked ? "checked='checked'" : ""}
/>

或者你可以使用它:

<c:choose>
    <c:when test="${isChecked}">
        <c:set var="varChecked" value="checked='checked'"></c:set>
    </c:when>

    <c:otherwise>
        <c:set var="varChecked" value=""></c:set>
    </c:otherwise>
</c:choose>

<form:checkbox id="someCheckbox" path="someCheckbox" 
    ${varChecked}
/>

比在c:if-tag中包装整个表单标记更简洁,更冗余。

显然,您需要包含核心标记库以便其中任何一个工作。

答案 1 :(得分:2)

在jsp中包含核心jstl标记:

    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

然后

    <input type="checkbox" name="someCheckbox" id="someCheckbox" <c:if test="${check your condition}">checked="checked"</c:if> /> 

答案 2 :(得分:1)

如果你将逻辑放在控制器

中会更好
String checked=null;
if(condition)
checked="checked"
else
checked="";

modelMap.put("checkBoxChecked",checked);

返回要查看的模型图

并在视图中添加如下

<form:checkbox id="someCheckbox" path="someCheckbox" ${checkBoxChecked}/>

答案 3 :(得分:0)

因为form:checkbox是通过路径属性与表单绑定的,所以如果你在表单对象中设置了值就足够了。

最终使用javascript进行操作