如何在JSTL上获取sessionScope属性?

时间:2012-01-02 19:07:16

标签: session variables scope jstl

任务是通过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>  

可以通过sessionScope交换applicationScope。

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

谢谢你们,

3 个答案:

答案 0 :(得分:5)

您正在阅读错误的教程页面。 <c:xxx>标记属于支持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的几个EL函数示例,另请参阅here

另见:

答案 1 :(得分:0)

我在您的代码中找不到您在programID中使用EL设置变量SessionScope的内容,如下所示。

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

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

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

它应该有用。

答案 2 :(得分:-1)

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

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 brushup了解java的基本概念