Struts2 EL不在jsp页面中工作

Struts2 EL不在jsp页面中工作,struts2,jstl,el,Struts2,Jstl,El,我有一个JSP页面,在该页面中,我尝试使用jstl和struts2标记使用页面范围属性。 下面的代码是 <%@ taglib uri="/struts-tags" prefix="s" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <c:set var="test" value="ramesh"/> <c:set v

我有一个JSP页面,在该页面中,我尝试使用jstl和struts2标记使用页面范围属性。 下面的代码是

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

      <c:set var="test" value="ramesh"/>
      <c:set var="test1" value="${test}"/>
      <s:set var="test2" value="${test}" />

标记产生以下异常“根据标记文件中的TLD或属性指令,属性值不接受任何表达式”

我有两个问题

1)
${test}
标记中使用时起作用


2)
${test}
标记中使用时不起作用。为什么?

EL和JSTL现在都在javaee标准中,所以我认为它们可以很好地合作

但是,在struts 2标记中,因为struts 2有自己的表达式语言-OGNL, 所以我认为他们更喜欢在标签中使用OGNL到EL,这就是他们不支持EL的原因。这是我的猜测。

来自Apache链接

从Struts版本2.0.9开始,JSTL/JSP表达式语言(EL)已被禁用,用于计算OGNL的Struts标记属性。这是对安全漏洞的一种预防措施,当属性首先作为JSTL/JSP EL表达式处理,然后将结果作为OGNL表达式处理时,可能会发生双重计算。解决方案是直接使用OGNL表达式表达Struts标记中的所有动态属性值。

因为属性值不接受任何表达式。@Aleksandr但为什么有效。显然是因为
接受表达式。@Aleksandr接受表达式,但不正确接受表达式。这是像那样开发那些标签的bcoz,对吗?。