Liferay中的Portlet导航

所以我在弄清楚如何处理liferay中的导航时遇到了一些麻烦.我是jsp,portlets和liferay的新手,但我想我已经用尽了所有寻找答案的文档.

我正在寻找一种提交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>

使用post,我会得到生成的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

如果我将表单更改为get,那么我得到这个url:

http://localhost:8080/web/10157/home?_search_WAR_searchportlet_INSTANCE_Kt9C_search=123

但是使用带有参数集的renderURL,我会得到这个,这是post和get将返回的组合:

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

所以现在,我可以使用带有post的表单,ParamUtil.getString将识别数据,但链接将不是可收藏的,或者我可以使用带有get的表单,将信息保留在url中,但我无法获取ParamUtil识别数据.即使我可以使用get表单来识别数据,我真的不想使用它,因为如果我正在从其他portlet中的表单进行任何提交,则不会保留该参数.根据我的理解,RenderURL保留了这些东西.

请原谅我,如果我完全不喜欢这些东西,请.我是jsp,portlets和liferay的新手,而不是因为我应该做很多这些事情.

最佳答案 因为你需要使用

<portlet:actionURL>

处理表格提交行动…..

点赞