因此,我在處理liferay中的導航時遇到了一些問題。我是jsp,portlets和liferay的新手,但我想我已經用盡了所有需要回答的文檔。Liferay中的Portlet導航
我正在尋找一種方法來提交一個HTML表單並設置渲染參數的字段。我希望能夠使用正常瀏覽器導航的網址和可收藏的網址。我已經想通過使用javascript來更新一個已經聲明的renderurl與窗體中的新值的方式來做到這一點,但我試圖找出一個更乾淨的方式來做到這一點。
現在,我使用這個頁面
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
<%@ taglib uri="http://liferay.com/tld/aui" prefix="aui" %>
<%@ page import="com.liferay.portal.kernel.util.ParamUtil" %>
<%@ page import="com.liferay.portal.kernel.util.Validator" %>
<%@ page import="javax.portlet.PortletPreferences" %>
<portlet:defineObjects />
<%
PortletPreferences prefs = renderRequest.getPreferences();
String search = ParamUtil.getString(renderRequest, "search");
%>
<portlet:renderURL var="viewURL">
<portlet:param name="jspPage" value="/view.jsp" />
</portlet:renderURL>
<aui:form action="<%= viewURL %>" method="post">
<aui:input label="search" name="search" type="text" value="<%=search %>" />
<aui:button type="submit" />
</aui:form>
使用後已經嘗試了一些方法..,我會得到結果URL:
http://localhost:8080/web/10157/home?p_p_id=search_WAR_searchportlet_INSTANCE_Kt9C&p_p_lifecycle=0&p_p_state=normal&p_p_mode=view&p_p_col_id=column-1&p_p_col_count=1&_search_WAR_searchportlet_INSTANCE_Kt9C_jspPage=%2Fview.jsp
如果我改變的形式獲得,然後我得到這個網址:
http://localhost:8080/web/10157/home?_search_WAR_searchportlet_INSTANCE_Kt9C_search=123
但使用與參數集的renderURL,我會得到這個,這是一個什麼樣的組合後兩者並獲得將返回:
http://localhost:8080/web/10157/home?p_p_id=search_WAR_searchportlet_INSTANCE_Kt9C&p_p_lifecycle=0&p_p_state=normal&p_p_mode=view&p_p_col_id=column-1&p_p_col_count=1&_search_WAR_searchportlet_INSTANCE_Kt9C_jspPage=%2Fview.jsp&_search_WAR_searchportlet_INSTANCE_Kt9C_search=123
就目前而言,我既可以使用與後一種形式,並ParamUtil.getString將識別數據,但鏈接不會是可收藏,或者我可以用一個形式GET ,在url中留下信息,但我無法讓ParamUtil識別數據。即使我可以使用get表單來獲取數據,但我真的不想使用它,因爲如果我正在通過其他portlet中的表單進行任何提交,參數將不會被保留。據我所知,RenderURLs保留這些東西。
請原諒我,如果我完全關閉這些東西,請。我對jsp,portlets和liferay很陌生,而對於我應該怎麼做很多這些東西感到遺憾。
看來你的問題對於你想達到什麼目標缺乏清晰度。 我們以某種方式得到了問題所在,但我不確定我是否可以將你放回到你想要的軌道上。 – Ar3s