Liferay Portlet 中使用 Http Post Data

在Liferay 6.2之後的版本中,如果要在portlet中使用http post的話,
有些事情需要注意。下面先簡單的建立程式碼。
於portlet class中撰寫以下程式

@ProcessAction(name="addName")
public void addName(ActionRequest actionRequest, ActionResponse actionResponse)
throws IOException, PortletException {
String userName = ParamUtil.get(actionRequest, "userName", StringPool.BLANK);
actionRequest.setAttribute("userName", userName);
}




於該portlet對映的view.jsp中撰寫以下程式,重點在於<portlet:namespace />,
如果沒加上去的話,Liferay 6.2 會無法取得userName的資料。

User Name is : <b> ${userName}</b>
<portlet:defineObjects />
<portlet:actionURL name="addName" var="addNameUrl"></portlet:actionURL>
<br />
<form action="${addNameUrl}" method="post">
<input name="<portlet:namespace />userName" type="text" /><br />
<input type="submit" />
</form>



不過這樣子寫感覺上怪怪的,沒辦法很直覺。
如果你不想加上<portlet:namespace />的話,那麼你可以使用下面的方法。
於   /你的Portlet名稱/docroot/WEB-INF/liferay-portlet.xml  這個檔案中,
找到你的portlet區段,然後加上下面的設定。

<requires-namespaced-parameters>false</requires-namespaced-parameters>


請特別注意,要加上這個設定有特定的順序,請放在<icon>icon.png</icon>的下方,不可以亂放。
加上去後會像下方的範例

<portlet>
<portlet-name>new-portlet-test</portlet-name>
<icon>/icon.png</icon>
<requires-namespaced-parameters>false</requires-namespaced-parameters>
<header-portlet-css>/css/main.css</header-portlet-css>
<footer-portlet-javascript>/js/main.js</footer-portlet-javascript>
<css-class-wrapper>new-portlet-test-portlet</css-class-wrapper>
</portlet>



新增評論

Loading