Так что у меня возникли проблемы с выяснением того, как обращаться с навигацией в LifeRay. Я новичок в jsp, портлетах и liferay, но думаю, что исчерпал всю документацию в поисках ответа.
Я ищу способ отправить HTML-форму и установить параметры визуализации с полями. Я хотел бы иметь URL-адреса, которые работают с обычной навигацией в браузере, и закладки URL. Я нашел способ сделать это с помощью 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
Если я изменю форму, чтобы получить, то я получу этот 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, я действительно не хочу использовать это, так как параметр не будет сохранен, если я выполняю какую-либо отправку из форм в других портлетах. Насколько я понимаю, RenderURLs сохраняют эти вещи.
Прошу прощения, если я полностью на этих вещах, пожалуйста. Я новичок в jsp, портлетах и liferay и немного заблудился из-за того, как я должен делать многие из этих вещей.