我在Liferay门户上有一个portlet,我在其中从调用操作。jsp页面。我想把一个字符串数组传递给另一个。显示此数组的jsp页面。但是,根本没有传递任何值。
我能够使用String something=(String)pref传递一些字符串值。getValue(“某物”、“某物”)
但这对数组不起作用。
这是我的观点。调用actionRequest的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]);
}
%>
我得到,我的数组在这里是空的?要访问我在actionRequest阶段保存的阵列,我需要做哪些更改?
第二个问题:是否可以将Java对象传递给。jsp页面?我猜想这只适用于字符串,但使用对象肯定很酷!
感谢任何回答!
看看这个页面。它是LifeRay留档,将信息从动作阶段传递到渲染阶段。
基本上,您可以使用actionResponse。setRenderParameter(“键”,数据) 将对象从动作方法转发到doView方法。在doView中,您可以通过请求获得它。getParameter(“键”)
对于Portlet来说,这是相当标准的,在我看来,这比使用会话更受欢迎,不管链接怎么说。使用会话意味着您必须确保不会向会话添加太多内容,并且不会给portlet容器带来很大的内存开销。对于一个用户来说,内存可能不多,但对于一个大而繁忙的站点来说,它可以快速累积起来,使您的服务器瘫痪,或者要求您需要比站点真正需要的更多的硬件。
本文还提到使用init参数自动将所有操作参数复制到渲染操作,作为另一个可行的选项。
可以将java对象放入Portlet会话中:
<%
JavaObject javaObject = new JavaObject();
renderRequest.getPortletSession().setAttribute("javaObjectAttr", javaObject);
%>
然后你可以在另一个jsp页面中获取这个对象:
<%
JavaObject javaObject = (JavaObject)portletSession.getAttribute("javaObjectAttr");
pageContext.setAttribute("javaObject", javaObject);
%>
<c:out value="${javaObject.firstName}"/>
我不知道这是不是一个好方法:)
希望这有帮助。
您可以将整个消息列表设置为属性。
即
actionRequest.setAttribute("messages", messagesObject);
您可以使用
即
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>
试试这个让我知道如果你有任何问题
问题内容: 我有一个字符串数组一样,我想这个数组发送到 ç 使用 JNI 。我找不到任何明确的解决方案。我试图将此字符串视为成功,但没有成功。 有没有办法做到这一点? 问题答案: 您可以编写一个简单的函数,该函数接受一个对象,将每个对象强制转换为jstring,然后对其进行调用。 像这样:
是否可以将字符串数组从feeder传递到post请求。 我的csv文件: 我的加特林剧本 我收到的错误消息: 看起来Gatling没有正确地接收馈线数据,我猜断点是字符串数组值传递给Gatling post请求的方式,有什么方法可以实现这一点吗?
问题内容: 我有一个PHP脚本,可以从数据库中检索名称(字符串)。我想使用$ .ajax()将此数组传递给Javascript。我不明白如何在PHP中对数组进行编码,然后在Javascript中对其进行解码。有人可以为此提供示例代码吗?非常感谢 !! 问题答案: HTML档案:
我试图在php脚本和c程序之间传递参数。我的php脚本如下所示 然后我想我的c程序返回给我一个字符串(但我真的不知道怎么做),你能帮忙吗?
问题内容: 背景: 我创建了一个非常简单的前端,用户可以在其中输入字符串。输入并单击“检查”按钮后,我想将此字符串作为JSON传递给python字符串,它将在其中进行SQL查找。根据SQL外观,python脚本应传递一个布尔值,该值应更改?到✔或✘。 题: 一旦按下“检查”按钮作为JSON到Python脚本,然后如何将字符串从Python传递到HTML,将?更改为✔或✘,如何传递字符串? 研究:
我是aws lambda和api网关的新手,我正在尝试向lambda函数传递一个json字符串。 但是,lambda不是用字符串调用的。 这是lambda。它获取一个对象作为输入,并返回类的字符串表示形式和对象的值。 api网关的映射模板是 api网关测试中的日志显示: 我希望json字符串被传递给lambda(作为字符串对象),但是TestMapping lambda返回的不是这个 如您所见,L