我正在使用c:set和c:if在jsp中(我正在使用Spring MVC 3)
<c:set var="myVar" value="${JavaClass.MY_KEY}"/>
<c:if test="${myVar == code}">
Do Somthing
</c:if>
但在这种情况下c:如果代码没有被执行。
当我给(没有c:设置)时
<c:if test="${'ABC' == code}">
Do Somthing
</c:if>
它有效。
谁能告诉我我做错了什么
由于
答案 0 :(得分:4)
${JavaClass.MY_KEY}
在页面中查找对象,然后请求,然后是会话,然后是应用程序范围,存储在JavaClass
属性名称下。如果找到一个,则会在此对象上调用方法getMY_KEY()
。
我怀疑这不是你认为这个表达式所做的。由于在任何范围内都没有这样的对象,因此它会计算为空字符串(或者为空,我无法肯定地说)。
无法使用JSP EL访问类常量。你可以做的最好的事情是在某个范围内存储一些对象,getter返回常量。
答案 1 :(得分:4)
您无法使用JSP EL直接访问JavaClass.MY_KEY
,但您可以使用Scriptlet one-liner *来执行此操作。
<c:set var="myVar" value="<%=JavaClass.MY_KEY%>"/>
*通常,应该避免使用scriptlet,但是这些可以引用静态字段和枚举常量的单行代码在JSP EL提供更好的访问方式之前是有用的。