2

非常快速的问题。有人可以向我解释为什么这段代码不起作用吗?

<%@ taglib prefix="logic"   uri="/WEB-INF/struts-logic.tld" %>

<%
    int myValue= 2;
%>

myValue: <%=myValue%>
<br/>
<logic:equal name="myValue" value="2" scope="session">
    logic:equal works!
</logic:equal>

即使我将 myValue 更改为 String 仍然不起作用

非常令人沮丧,因为我知道这将是显而易见的。

提前致谢

KS


工作示例!

<%@ taglib prefix="logic" uri="/WEB-INF/struts-logic.tld" %>

<%
    request.setAttribute("myValue", 2);
%>

myValue - <%=request.getAttribute("myValue")%>]]

<br/>
<logic:equal name="myValue" value="2" scope="request">
    logic:equal works!
</logic:equal>
4

2 回答 2

3
<logic:equal name="myValue" value="2" scope="session">

此标记查找名为“myValue”的会话属性。不适用于名为“myValue”的局部变量。

真正的问题是:您为什么要使用标记为已弃用的标签库以支持 JSTL,而该库是正式放弃的框架的一部分?

于 2013-11-14T14:15:48.393 回答
0

Scriptlet 变量不可被任何范围访问。您可以将它们与 scriptlet 表达式一起使用,但不能在 EL 表达式中使用它们。阅读有关 EL 范围的更多信息EL 变量范围

在 Struts 应用程序中可以使用 JSTL 和 Struts 标签

<c:set var="myValue" value="2"/>
<c:if test="${myValue == 2}">
  if test works!
</c:if>
于 2013-11-14T14:53:06.970 回答