如何使用表单:radiobuttons没有模型/命令对象

时间:2014-04-25 22:47:34

标签: jsp java-ee spring-mvc web-applications

我想使用form:radiobuttons标签从spring form tag lib获取输入表单用户,但我不想使用模型/命令对象,因为这是我作为输入获得的唯一值。所以我试过下方。

JSP:

<form action="submitform" method="post" >
<form:radiobuttons path="lang"  items="${languages}"/>
<input type="submit" value="Save"/>
</form>

控制器的方法:

@RequestMapping("submitform")
public ModelAndView submitForm(@RequestParam("lang") List<String> lang) {
    System.out.println("test:"+lang);
    return new ModelAndView("test", "lang", lang);
}

当我提交表单时,应用程序会抛出错误。 HTTP状态400 - 必需列表参数“lang”不存在。

任何人都可以告诉我正确的方法,我有两个以下的要求

1.想要使用形式:radiobuttons。

2.不想使用模型/命令对象。

请帮忙

1 个答案:

答案 0 :(得分:2)

  

如何使用form:radiobuttons with out model / command object

如果没有表单支持bean,则无法使用 spring的表单元素。 spring的表单元素标记的 path 属性应该指定模型/命令bean的数据绑定属性的路径。

Spring javadoc大概有<form:radiobuttons

| Attribute  | Required? | Runtime Expression? | Description
------------------------------------------------------------
|    path    |  true     |     true            |Path to property for data binding

这意味着,在您没有用于数据绑定的模型/命令bean的情况下,spring将抛出一个带有以下消息的异常:

Neither BindingResult nor plain target object for bean name 'command' available
  

任何人都可以告诉我正确的方法吗

在jsp中使用纯HTML单选按钮并保留所有方法。 在jsp渲染radiobuttons像:

<form action="submitform" method="post" >
    <%-- <form:radiobuttons path="lang"  items="${languages}"/> --%>
    <c:forEach items="${languages}" var="lng">
        <input type="radio"
                name="lang"
                value="${lng}">${lng}
    </c:forEach>
<input type="submit" value="Save"/>
</form>