表单 - 操作属性值

时间:2015-03-19 04:12:08

标签: spring-mvc magnolia

如果我将表单元素集的action属性设置为“?”,这意味着什么?

在我的应用程序中,表单元素是:

 <form action = "?" commandName="demoPageForm" method="POST">
 .......
 </form>

在控制器中我喜欢:

   @RequestMapping(value = "/getDemoPage", method = RequestMethod.POST)
   public ModelAndView setPartGross(

   @ModelAttribute("demoPageForm") DemoPageForm emoPageForm,       

    BindingResult result) {

     .......

     return ... ;

  }

此处控件转到此控制器方法。

  • 怎么可能?

  • 这背后的流程是什么以及该映射的原因是什么?

    我正在使用玉兰花。

    任何人都可以建议..?

1 个答案:

答案 0 :(得分:1)

将表单操作设置为&#34;?&#34;将使它使用当前URL(您所在的页面),并附加一个查询字符串&#34;?&#34;到那个URL。因此,如果您使用http://example.com/getDemoPage,表单操作将为http://example.com/getDemoPage?这就是你的控制器响应的原因。

对于Spring MVC,您应该使用Spring的taglib <form:form...来利用自动HTML转义(在web.xml中启用此功能)和CSRF令牌(如果使用Spring Security)。

您不需要在Spring taglib表单上设置操作,它始终是当前的URL。默认方法是POST,因此您也不需要设置它。不确定为什么你在常规HTML(非Spring)表单中有commandName,因为它是一个Spring属性。