2014-01-08 79 views
2

我已經開發出一種liferay6.1門戶Spring MVC的在那裏我有兩個drop down的(第一個選項,第二個選項)和text box(輸入名稱),並保存buttonaction URL不會在liferay6.1中調用正確的操作方法?

我有兩個ajax要求各drop down。例如說,對於第二選項下拉,我有一個javascript方法,其中我用PARAM幀的動作URL稱爲action中包含

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

同樣地,我有其它一個javascript方法在它的值drop down也是我在哪裏提供諸如

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

動作URL當我點擊保存按鈕,我做一個表單提交,我已經陷害如果不採取行動PARAM的URL。像

<portlet:actionURL portletMode='view'></portlet:actionURL>. 

因此,對於每一個動作,我有我的controller.java不同的方法,將收到這個動作的請求。對於兩種操作方法,我在此方法的頂部添加了註釋,如

@RequestMapping(params = "action=dropDownSelect") 

。對於一個單獨的操作方法,我只是給了註釋這樣

@RequestMapping("VIEW") 

通常,用PARAM動作請求沒有得到正確的方法,而不是它要具有註釋爲@RequestMapping("VIEW")方法收到了我的問題。

我在liferay6.0中使用了相同的代碼,但我沒有遇到類似的問題,但在Liferay 6.1中,我經常遇到這個問題。任何人都可以幫我解決問題嗎?

+0

你應該使用@ResourceMapping和作爲ajax的東西。 –

+0

感謝您的回覆。實際上,我們已經將擁有70多個portlet的應用從liferay 6.0遷移到liferay 6.1。改變這些portlet中的每個方法都很困難。沒有其他方法或任何理由爲什麼會發生這種行爲? – user2574980

回答

0

發生此問題是因爲對於我在javascript中構建的每個動作url都有portletmode =「view」。因爲其中,intermitently,春天不查找驗證是否有任何動作param是否存在,它默認稱爲具有@RequestMapping(「VIEW」)的動作方法。爲了解決這個問題,我修改了註釋這樣的,

@RequestMapping(「VIEW」)的所有具有PARAMS值的方法 @ActionMapping(PARAMS =「行動= dropDownSelect」),以在註釋被提及。 因此,當從javascript到控制器時,spring會檢查portletmode = view以及action param。

相關問題