选中基于模型变量的单选按钮 + Spring 表单 + JSP
Checked radion button based on model variable + Spring forms + JSP
我有一个名为 cuntry.java
的模型,变量为 lang
。我想检查 JSP 中基于 lang
的单选按钮选项。它可以是 '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
<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>
标签来解决这个问题。
显然第一个解决方案看起来更好。
表单标记中存在多个错误。使用 Spring 标签时,您不能指定 id
和 name
属性。它们将从 path
变量自动生成。不允许在另一个标签 <form:radiobutton ... />
内使用标签 <c:if ... />
。也删除结束标记。这才是正确的做法
<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。
我有一个名为 cuntry.java
的模型,变量为 lang
。我想检查 JSP 中基于 lang
的单选按钮选项。它可以是 '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
<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>
标签来解决这个问题。
显然第一个解决方案看起来更好。
表单标记中存在多个错误。使用 Spring 标签时,您不能指定 id
和 name
属性。它们将从 path
变量自动生成。不允许在另一个标签 <form:radiobutton ... />
内使用标签 <c:if ... />
。也删除结束标记。这才是正确的做法
<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。