任务是通过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。
再次“琐碎”的复杂性让我疯狂。为什么公司。例子永远不起作用?
谢谢你们,
答案 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的基本概念