所以我收到了这个复选框:
<form:checkbox id="someCheckbox" path="someCheckbox"/>
现在我想添加一个属性 - 如果条件为真,则特别添加checked="checked"
。如果不将整个元素包装在if语句中,这可能吗?
基本上我想要的(导致错误):
<form:checkbox id="someCheckbox" path="someCheckbox" ${isChecked ? 'checked=checked' : ''}/>
注意添加属性checked=""
并使其值有条件也不起作用,因为在现代浏览器中将checked = false或checked =''视为已选中。
答案 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进行操作