访问 JavaBean 对象并使用 EL 将参数传递给 JSP

Access JavaBean object and pass argument to JSP using EL

提问人:Rgnr 提问时间:11/16/2023 最后编辑:Roman CRgnr 更新时间:11/18/2023 访问量:84

问:

我正在尝试在我们的应用程序中将我们的遗留代码转换为 JSTL+EL。我只是想知道是否有办法使用 EL 在 JSP 中访问带有参数的 JavaBean 对象和方法?

所以这里是之前和之后的代码。

以前:

  <HTML>
<jsp:useBean id="someBean" scope="session" class="package.className" />
<head>
</head>
<BODY>
<p>
<%= ((package.className)session.getAttribute("someBean")).getSomeDataFromBean(request,response) %>
</p>
</BODY>
</HTML>

那么这就是我想要实现的目标

  <HTML>
    <%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
    <%@ taglib uri = "http://java.sun.com/jsp/jstl/functions" prefix = "fn" %>
    <body> 
       <p> 
         <c:out value="${package.className.getSomeDataFromBean(request,response)}"/> </p>
    </body>
    </HTML>

请注意,包类只是一个 Bean,而不是一个 servlet。

JSP EL公司

评论

0赞 Roman C 11/16/2023
这个问题能回答你的问题吗?
0赞 Rgnr 11/16/2023
不,我想不惜一切代价避免使用scriplets。我没有 servlet,我想在给定上面的示例的情况下使用 JSTL 将 Bean 显式调用到我的 JSP。

答:

0赞 BalusC 11/16/2023 #1

继续使用 .没关系。缺省情况下,JSP 受管 Bean 已通过其在 EL 作用域中可用,如下所示:<jsp:useBean>id

${someBean}

所以,这应该做:

<c:out value="${someBean.getSomeDataFromBean(pageContext.request, pageContext.response)}" />

请注意,和实例只能通过 获得。HttpServletRequestHttpServletResponse${pageContext}

评论

0赞 Rgnr 11/16/2023
谢谢!我应该试一试,让你知道!棒
0赞 Roman C 11/16/2023
该代码对 XSS 很有价值。
0赞 Rgnr 11/16/2023
似乎您的建议有效@stackoverflow.com/users/157882/balusc,但我遇到了不同的错误。你认为这是因为空的http请求和响应吗?] 具有根本原因 java.lang.NullPointerException 在 package.className.getSomeDataFromBean(PendingBean.java:617)
1赞 BalusC 11/16/2023
@RomanC:“代码对 XSS 很有价值”:没有:)您可能想退后一步,了解 XSS 到底是什么,以及 JSTL c:out 到底是做什么的。
0赞 BalusC 11/16/2023
@Rgnr:答案已调整。