Struts逻辑标记等于不起作用

时间:2013-11-14 13:52:15

标签: java jsp jstl struts logic

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

<%@ 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>

2 个答案:

答案 0 :(得分:2)

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

此标记查找名为&#34; myValue&#34;的会话属性。不适用于名为&#34; myValue&#34;。

的局部变量

真正的问题是:为什么你使用的标记库被标记为不赞成使用JSTL,这个库是正式放弃的框架的一部分?

答案 1 :(得分:0)

任何范围都无法访问Scriptlet变量。您只能将它们与scriptlet表达式一起使用。

在Struts中可以使用JSTL和Struts标签

<c:set var="myValue" value="2"/>
<c:if test="${myValue == 2}">
  if test works!
</c:if>