我在 Liferay 门户上有一个 portlet,我从 .jsp 页面调用操作。我想将一个字符串数组传递给另一个将显示该数组的 .jsp 页面。但是,根本没有传递任何值。
我可以通过一些String values using String something = (String)prefs.getValue("something", "something");
,但这不适用于数组。
这是我调用 actionRequest 的view.jsp(我只会显示部分代码,否则会太长):
<portlet:actionURL var="loadMessages" name="loadMessages">
<portlet:param name="jspPage" value="/view.jsp" />
</portlet:actionURL>
这是我的 Java 类中的 loadMessages() 函数:
public void loadMessages(ActionRequest actionRequest, ActionResponse actionResponse)
throws IOException, PortletException {
manager.loadFromDB();
ArrayList<Message> messagesObject = manager.getMessages();
// we must save our messages as strings
String[] messages = new String[messagesObject.size()];
for (int i=0; i<messagesObject.size(); i++) {
String msg = "";
Message message = messagesObject.get(i);
msg += message.getMsgid() + "\n";
msg += message.getSender() + "\n";
msg += message.getReceiver() + "\n";
messages[i] = msg;
}
// save
if (messages != null) {
actionRequest.setAttribute("messages", messages);
System.out.println(messages.length + " messages loaded!");
}
}
到目前为止,这工作正常:我收到“加载了 x 条消息!” 消息。
当我想在我的display.jsp文件中访问这个数组时,问题就来了:
<%
String[] messages = (String[])renderRequest.getAttribute("messages");
if (messages == null) {
System.out.println("NULL MESSAGES");
} else {
System.out.println(messages[0]);
}
%>
我得到了,我的数组在这里是 NULL 吗?我必须进行哪些更改才能访问我在 actionRequest 阶段保存的数组?
第二个问题:是否可以将 Java 对象传递给 .jsp 页面?我猜这仅适用于字符串,但使用对象肯定会很酷!
感谢您的任何回答!