因此,我在处理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