gpt4 book ai didi

java - Liferay portlet - 将字符串数组从 actionRequest 传递到 renderPhase

转载 作者:行者123 更新时间:2023-11-30 07:16:54 27 4
gpt4 key购买 nike

我在 Liferay 门户上有一个 portlet,我在其中从 .jsp 页面调用操作。我想将一个 String 数组传递给另一个将显示该数组的 .jsp 页面。但是,根本没有传递任何值。

我可以使用 String something = (String)prefs.getValue("something", "something"); 传递一些 String 值, 但这不适用于数组。

这是我的 view.jsp,我从中调用 actionRequest(我将只显示部分代码,否则会太长):

<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 页面?我猜这只适用于字符串,但使用对象肯定很酷!

感谢您的回答!

最佳答案

您可以将整个消息列表设置为属性。

 actionRequest.setAttribute("messages", messagesObject);

你可以渲染到特定的jsp使用

res.setRenderParameter("mvcPath", "jspPath");

res.setRenderParameter("jspPage", "jspPath"); (this one is deprecated now)

在 jsp 部分,您可以使用 jSTL c:foreach

访问此值

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<c:forEach var="message" items="${messages}">
<c:out value="${message.sender}"/>
</c:forEach>

试试这个如果你有任何问题,请告诉我

关于java - Liferay portlet - 将字符串数组从 actionRequest 传递到 renderPhase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16581952/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com