action url在liferay 6.1中没有调用正确的动作方法?

时间:2014-01-08 10:29:53

标签: spring-mvc liferay liferay-6

我用 spring mvc 开发了一个 liferay6.1 portlet ,其中我有两个drop down(第一个选项和第二个选项)和一个{{ 1}}(输入名称)和保存text box

我每个button都有两个ajax请求。比方说,对于第二个选项下拉,我有一个drop down方法,我用一个名为javascript的参数构建动作网址,其值如下所示

action

同样,对于其他<portlet:actionURL portletMode='view'><portlet:param name='action' value='dropDownSelect'/></portlet:actionURL> . 我也有一个javascript方法,我也提供了行动网址

drop down

当我点击“保存”按钮时,我正在进行表单提交,其中我已经构建了一个没有动作参数的URL。喜欢

<portlet:actionURL portletMode='view'><portlet:param name='action' value='addAnotherOption'/></portlet:actionURL>. 

因此,对于每个操作,我的<portlet:actionURL portletMode='view'></portlet:actionURL>. 中都有一个不同的方法可以接收此操作请求。对于两种动作方法,我有注释,如

controller.java

在方法之上。仅对于一种动作方法,我只是给出了这样的注释

  @RequestMapping(params = "action=dropDownSelect") 

我的问题通常是,使用param的操作请求没有以正确的方法接收,而是转到注释为 @RequestMapping("VIEW") 的方法。

我在@RequestMapping("VIEW")中使用了相同的代码,我没有遇到任何类似的问题,但在liferay6.0中,我经常遇到这个问题。任何人都可以帮我解决问题吗?

1 个答案:

答案 0 :(得分:0)

这个问题正在发生,因为我在javascript中构建的每个动作网址都有portletmode =“view”。因为,间歇性地,spring不查找以验证是否存在任何动作参数,它默认称为具有@RequestMapping(“VIEW”)的动作方法。为了解决这个问题,我修改了这样的注释,

@RequestMapping( “VIEW”) @ActionMapping(params =“action = dropDownSelect”)用于具有在注释中提及的参数值的所有方法。  因此,当从javascript转到控制器时,spring将检查portletmode = view以及action param。