我用 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
中,我经常遇到这个问题。任何人都可以帮我解决问题吗?
答案 0 :(得分:0)
这个问题正在发生,因为我在javascript中构建的每个动作网址都有portletmode =“view”。因为,间歇性地,spring不查找以验证是否存在任何动作参数,它默认称为具有@RequestMapping(“VIEW”)的动作方法。为了解决这个问题,我修改了这样的注释,
@RequestMapping( “VIEW”) @ActionMapping(params =“action = dropDownSelect”)用于具有在注释中提及的参数值的所有方法。 因此,当从javascript转到控制器时,spring将检查portletmode = view以及action param。