Spring 3 MVC:是否可以使用没有'commandName'绑定的弹簧形式?

Sha*_*nak 6 spring spring-mvc

我的问题是,是否有必要对表单进行' commandName '绑定,对输入进行' path '绑定?

我有一个工作流程,需要用户从一系列的ajaxy选择框中选择数据.因此表单不能直接映射到任何模型.为了适应这种形式而添加另一个模型似乎毫无意义,而这个表单上的所有内容都将由ajax驱动.现在我知道我总是可以写一个经典的表单并选择标签,但我想在这里利用spring标签,例如:

<form:options items="${list}" itemLabel="name" itemValue="id"/>
Run Code Online (Sandbox Code Playgroud)

这使我可以轻松填写​​表单项.而且我想保持项目的一致性并使用spring标签.

我想知道关于这个主题的想法和意见.

谢谢!

PS:我来自铁轨背景上的红宝石,并习惯了大量的语法糖:如果问题听起来很愚蠢或回答明显,请原谅我.

Vit*_*aga 8

我不知道它是否有用,但它在这里:

如果未在表单中设置"commandName",则此属性的默认值将设置为"command".因此,如果您不设置它,绑定数据将具有名称'command'.

如果需要,可以使用绑定数据的名称进行设置.

================================================== ========================

不使用数据绑定的解决方案是:

我会向控制器方法添加一个HttpServletRequest请求参数,并像servlet一样获取参数.

@Controller 
public class SomeController {

    @RequestMapping(value = "/formAction", method = RequestMethod.POST)
    public String controllerMethod(HttpServletRequest request){  
        // this way you get value of the input you want
        String pathValue1 = request.getParameter("path1");
        String pathValue2 = request.getParameter("path2");
        return "successfulView";
    }

}
Run Code Online (Sandbox Code Playgroud)

PS:'path1'和'path2'是您在输入中设置的路径名.我知道它似乎没有正确使用Spring,但它是Spring让我们使用的hack.

表格将是这样的:

<form:form method="post" action="/formAction">
    <form:input path="path1" />
    <form:input path="path2" />
    <input type="submit" value="Submit"/>
</form:form>
Run Code Online (Sandbox Code Playgroud)

希望它有用.


nar*_*dra 7

如果我们不将commandName添加到spring表单标记,则会引发异常,因为
IllegalStateException:BindingResult和plain目标对象"command"都不可用作请求参数...