我似乎无法访问要传递给我的.jsp文件的数据。我把它简化为简单的东西,它仍然不适合我。此portlet正在部署到liferay门户。
问题:我点击链接为下一个.jsp页面调用renderURL。在doView()方法中,我使用setAttribute设置了一个属性。当我在.jsp中检索该属性时,它返回null。
预期输出:“正确价值”
实际输出:“默认值”
NewPortlet.java(Controller)
public class NewPortlet extends MVCPortlet {
@Override
public void doView(RenderRequest request, RenderResponse response)
throws IOException, PortletException {
request.setAttribute("test", "Proper Value");
String path = ParamUtil
.getString(request, "path", "/html/new/view.jsp");
include(path, request, response);
}
}
view.jsp的
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
<portlet:defineObjects />
<portlet:renderURL var="testURL">
<portlet:param name="path" value="/html/new/edit.jsp"/>
</portlet:renderURL>
<p><a href="<%= testURL %>">Click me!</a></p>
edit.jsp文件
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
<%@page import="com.liferay.portal.kernel.util.ParamUtil"%>
<portlet:defineObjects />
<%
String test = ParamUtil.getString(renderRequest, "test", "default value");
%>
<p><%= test %></p>
答案 0 :(得分:2)
我不确定你的用途是什么。
但问题是,您正在设置属性并尝试获取参数,因此它返回null。
要解决您的问题,请使用renderRequest.getAttribute("test")
或使用el,${test}
答案 1 :(得分:1)
&#34; view.jsp&#34;是指&#34; edit.jsp&#34;使用portlet:renderURL
,这可能是一个问题。 The render requests may be executed sequentially or in parallel without any guaranteed order.
我不确定为什么你的工作流程是这样的(即在doView方法中设置参数),但是尝试使用actionURL而不是renderURL。