【问题标题】:How to get sessionScope attributes on JSTL?如何在 JSTL 上获取 sessionScope 属性?
【发布时间】:2012-01-02 19:07:15
【问题描述】:

任务是通过 JSTL 从会话中检索参数。会话参数名称是 "programId" 。

我试过了:

 <c:if test="${sessionScope.programId != null}" > 
  please execute
  </c:if>

然后我尝试了:

 <c:if test="${sessionScope:programId != null}" > please execute </c:if>

我得到:函数 applicationScope:programId 未定义

在上面我有:

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

Oracle 有例子:

http://docs.oracle.com/javaee/1.4/tutorial/doc/JSTL5.html

 <c:if test="${applicationScope:booklist == null}" > 
   <c:import url="${initParam.booksURL}" var="xml" />
   <x:parse doc="${xml}" var="booklist" scope="application" />
</c:if>  

applicationScope 可以被 sessionScope 交换。

“琐碎”的复杂性再次让我发疯。为什么公司示例永远不起作用?

谢谢你们,

【问题讨论】:

    标签: session variables scope jstl


    【解决方案1】:

    您正在阅读错误的教程页面。 &lt;c:xxx&gt; 标签确实 not 属于支持 XPath 语法的 JSTL XML taglib。相反,它属于JSTL Core taglib,其正确的教程页面是here

    您需要改用普通的${bean.property} 表示法。

    <c:if test="${applicationScope.booklist == null}"> 
       <c:import url="${initParam.booksURL}" var="xml" />
       <x:parse doc="${xml}" var="booklist" scope="application" />
    </c:if>
    

    在普通的 EL(不是 XPath!)语法中,: 标识 EL 函数的开始。另请参阅JSTL Functions taglib 了解教程页面为here 的几个EL 函数示例。

    另见:

    【讨论】:

      【解决方案2】:

      我没有在您的代码中找到您已使用如下所示的 EL 在您的 SessionScope 某处设置变量 programID

      <c:set var="programID" value="SomeValue" scope="session"/>
      

      如果您确实没有设置该变量,请先尝试像上面一样设置它,然后尝试以下操作。

      <c:if test="${sessionScope:programId != null}" > please execute </c:if>
      

      它应该可以工作。

      【讨论】:

      • 我在控制器中定义了会话属性。我按照你的建议做了同样的事情,我得到: org.apache.jasper.JasperException: /WEB-INF/views/viewBank.jsp (line: 39, column: 0) "${sessionScope:programId != null}" contains无效表达式:javax.el.E​​LException:无法解析表达式 [${sessionScope:programId != null}]
      • sessionScopeimplicit object后面使用冒号是错误的。
      【解决方案3】:

      如果您在控制器中设置了会话

      session.setAttribute("programID",someValue);
      

      那你应该试试这个

      ${sessionScope.programID} in your jsp 
      

      这是jstl核心库的一部分

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

      如果你遇到异常

      "${sessionScope:programId != null}" contains invalid expression(s): javax.el.ELException: Failed to parse the expression [${sessionScope:programId != null}] 
      

      在你的 lib 文件夹中包含 jasper.jar java brushupjava的基本概念

      【讨论】:

        猜你喜欢
        • 2013-10-26
        • 1970-01-01
        • 1970-01-01
        • 2011-10-28
        • 2012-07-12
        • 2023-03-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多