最佳答案 -6ren">
gpt4 book ai didi

java - 将列表传递到 JSP

转载 作者:行者123 更新时间:2023-12-01 15:34:58 27 4
gpt4 key购买 nike

我将 bean 列表传递到 JSP 中,然后我想使用 JSTL 检索一些数据,但没有填充任何内容,只是空标记。有什么想法吗?

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<jsp:useBean id="mailingbean" scope="request" class="com.dmd.jpa.Imp.AmpImp" />
<jsp:useBean id="mb" class="com.dmd.jpa.entity.Amp" />
<%
mb = mailingbean.getResultProdInfo();

%>
<data>
<item>
<c:out value="<ColourCd> ${mb.apid} </ColourCd>"/>
</item>
</data>

最佳答案

Scriptlet 和 EL 不共享相同的变量范围。 EL 将变量解析为 PageContextHttpServletRequestHttpSessionServletContext 的属性。 Scriptlet 仅解析在方法或类范围内声明的变量。

在这种特殊情况下,您基本上需要将其设置为请求属性:

<%
mb = mailingbean.getResultProdInfo();
request.setAttribute("mb", mb);
%>
<data>
<item>
<c:out value="<ColourCd>${mb.apid}</ColourCd>" />
</item>
</data>

但是,这没有任何意义。以下 JSP bean 声明

<jsp:useBean id="mailingbean" scope="request" class="com.dmd.jpa.Imp.AmpImp" />

将通过 ${mailingbean} 提供它。所以你需要做的就是

<data>
<item>
<c:out value="<ColourCd>${mailingbean.resultProdInfo.apid}</ColourCd>" />
</item>
</data>

如果您在 getter 方法中执行数据加载工作,我会将其移至 bean 的构造函数,那里才是此类工作实际所属的地方。

public class AmpImp {

private List<Amp> resultProdInfo;

public AmpImp() {
// Do the business job here.
resultProdInfo = loadItSomehow();
}

public List<Amp> getResultProdInfo() {
// Do NOT do the business job here. Just return the property.
return resultProdInfo;
}

// ...
}

另请参阅:

关于java - 将列表传递到 JSP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9009201/

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