检查radion按钮基于模型变量+ Spring形式+ JSP

时间:2016-10-27 19:30:47

标签: spring jsp spring-mvc jstl spring-form

我的模型名为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 &lt;form:radiobutton tag

2 个答案:

答案 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标记时,您可能不会指定idname属性。它们将从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 = languagename = radios,则无法使用Spring标记。

你会找到一个很好的例子here