我正在尝试将参数从portlet
传递给新的jsp。我的意思是,view.jsp
是我在portlet
呈现时看到的第一个页面。此view.jsp
包含提交,用户在其中插入ID。该提交会调用处理ID的ProcessAction。一旦ID被处理,我需要将一个参数传递给新的jsp(而不是view.jsp)。提交后应收取newpage.jsp
费用。
我怎么能这样做?我一直在寻找解决方案,但我每天都会感到困惑。
更新
是的,我想将参数从我的流程操作传递到JSP。但问题仍然存在,我不知道为什么。我一直在阅读您的链接提供的内容,并且我已经包含了文档建议使其工作的行。但它不起作用。
这是我的代码(行动阶段):
@ProcessAction(name="obtenerExpedientesPorNIF")
public void obtenerExpedientesPorNIF(ActionRequest actionRequest, ActionResponse actionResponse) throws Exception {
//code to process the information I need to pass to the render phase (JSP)
String[] expedientes_nif = null;
for (int i=0; i<lista_expedientes.size(); i++)
{
ExpedienteListItem expediente = lista_expedientes.get(i);
expedientes_nif[i] = expediente.getNumeroExpediente();
}
actionResponse.setRenderParameter("lista-expedientes", expedientes_nif);
}
这是另一个(渲染阶段):
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
Insert your ID:<br><br>
<%
String string = renderRequest.getParameter("lista-expedientes");
%>
<portlet:defineObjects />
<portlet:actionURL name="obtenerExpedientesPorNIF" var="addNameUrl">
</portlet:actionURL>
<form action="${addNameUrl}" method="post">
<input name="NIF" type="text"/><br><br>
<input type="submit" value="Realizar búsqueda"/><br>
</form>
我的IDE在此行报告错误:
String string = renderRequest.getParameter("lista-expedientes");
那么,您认为我的代码需要改变哪些变化?
答案 0 :(得分:3)
我了解您希望将参数从操作阶段传递到渲染阶段(因此可以通过JSP读取)。可以使用渲染参数完成。首先,您必须在操作方法中添加参数:
actionResponse.setRenderParameter("parameter-name", "value");
然后在render方法或JSP文件中读取id:
renderRequest.getParameter("parameter-name");
Liferay's documentation中有一篇关于将值传递到行动阶段的文章
答案 1 :(得分:0)
在使用<portlet:defineObjects />
变量之前放置renderRequest
标记:
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
<portlet:defineObjects />
Insert your ID:<br><br>
<%
String string = renderRequest.getParameter("lista-expedientes");
%>
答案 2 :(得分:0)
如下所述,我们可以提供动作阶段参数来渲染阶段。
MVCPortlet类将所有操作参数直接复制为渲染参数。您可以通过在portlet.xml中设置以下init-param来实现此目的,
XML:
<init-param>
<name>copy-request-parameters</name>
<value>true</value>
</init-param>