我的模型名为cuntry.java
,变量为lang
。我想根据lang
检查JSP中的单选按钮选项。它可能是' EN'或者' FR'。当我写下面的代码,在JSP页面中抛出错误。
代码:
<form:radiobutton path="lang" id="language" value="FR" name="radios" <c:if ${cuntry.lang == 'FR' ? 'checked="checked"' : '' } /> ></form:radiobutton>
错误:Unterminated <form:radiobutton tag
答案 0 :(得分:1)
<c:if>
标记适用于标记而非属性。因此,您的html语法将变为无效。
我已经有很长一段时间没有做过jsp了。这应该或多或少有效:
<form:radiobutton checked="${cuntry.lang == 'FR' ? 'checked':''}" path="lang" id="language" value="FR" name="radios">
</form:radiobutton>
如果您坚持使用<c:if>
标记,则可以执行以下操作:
<c:if test="${cuntry.lang == 'FR'}">
<form:radiobutton checked="checked" path="lang" id="language" value="FR" name="radios">
</form:radiobutton>
</c:if>
<c:if test="${cuntry.lang != 'FR'}">
<form:radiobutton path="lang" id="language" value="FR" name="radios">
</form:radiobutton>
</c:if>
您还可以使用<c:choose>,<c:when>,<c:otherwise>
标记来解决此问题。
显然第一种解决方案看起来更好。
答案 1 :(得分:1)
表单标记中存在多个错误。使用Spring标记时,您可能不会指定id
和name
属性。它们将从path
变量自动生成。不允许在另一个标记<c:if ... />
内标记<form:radiobutton ... />
。同时删除结束标记。这是正确的方法
<form:radiobutton path="lang" value="FR" checked="${cuntry.lang == 'FR' ? 'checked' : '' }" />
如果cuntry.lang
的值为FR
,则Spring标记将生成以下HTML(编译后)
<input id="lang" name="lang" checked="checked" type="radio" value="FR" />
,否则
<input id="lang" name="lang" type="radio" value="FR" />
如果您绝对需要属性id = language
和name = radios
,则无法使用Spring标记。
你会找到一个很好的例子here。