Spring portlet @ActionMapping用法

时间:2011-01-03 15:25:28

标签: java spring-mvc portlet

可以请任何人解释一下,如何正确映射POST请求?从API文档中不清楚。

应使用action参数javax.portlet.action

的值分配

@ActionMapping(value = "addDocOrder")
public void addDocOrder(@ModelAttribute("order").......

接下来我们有“params”(JAVADOC:映射请求的参数,缩小主映射。)

@ActionMapping(params = "action=addDocOrder")
public void addDocOrder(@ModelAttribute("order").......
  
    

JAVADOC for value()注释参数:动作的名称,     根据     Portlet 2.0“javax.portlet.action”     参数。如果没有指定,     方法将用作默认值     处理程序:即对于动作请求     没有具体的行动映射     找到。注意所有这样的注释     动作方法仅适用于     @RequestMapping约束     包含处理程序类。

  

我绝对不知道“value”注释参数存在的意义。在那里没有任何意义......它意味着是主要的映射,对于辅助映射,但是{params =“action = addOrder”}使“价值”变得多余。

请看一下这个问题也是相关的https://stackoverflow.com/questions/4782971/handling-ajax-requests-with-spring-portlet

2 个答案:

答案 0 :(得分:4)

我同意你的评估。我在阅读规范时可以看到的唯一真正优势是添加了标签中的一些特殊处理。显然这两个是等价的:

<portlet:actionURL>
  <portlet:param name="javax.portlet.action" value="addDocOrder"/>
</portlet:actionURL>

<portlet:actionURL name="addDocOrder" />

来自规范

中的“PLT.26.2 actionURL Tag”

答案 1 :(得分:1)

javax.portlet.action是value()映射到的参数的名称。所以对于像这样的映射:

@ActionMapping(value = "addDocOrder")
public void addDocOrder(@ModelAttribute("order").......

您的请求URL应该构建如下:

<portlet:actionURL>
  <portlet:param name="javax.portlet.action" value="addDocOrder"/>
</portlet:actionURL>