Java 如何使用struts2 ognl进行字符串比较?

Java 如何使用struts2 ognl进行字符串比较?,java,jsp,struts2,Java,Jsp,Struts2,我有两个字符串变量“userType”和“isOpened”。isOpened的值为“true”,userType为“user”,这两个值的类型均为string 当我在JSP上打印这个时,我得到了 <s:property value="%{#session.isProjectOpened}"/>; <s:property value="%{#session.isProjectOpened.equalsIgnoreCase(true)}"/>; 我认为这两个值都是真的 而

我有两个字符串变量“userType”和“isOpened”。isOpened的值为“true”,userType为“user”,这两个值的类型均为string

当我在JSP上打印这个时,我得到了

<s:property value="%{#session.isProjectOpened}"/>;
<s:property value="%{#session.isProjectOpened.equalsIgnoreCase(true)}"/>;
我认为这两个值都是真的

而当我使用

<s:property value="%{#session.userType}"/>;
<s:property value="%{#session.userType.equalsIgnoreCase(user)}"/>;
我得到值user和false

只要我做了如下的小改动 ;

我得到的值是user和true

我的问题是: 1我可以像equalsIgnoreCaseuser一样直接使用字符串“user”,而不必定义字符串

定义字符串的含义 使用用户

2如果是,那么我可以像上面那样直接完成,还是必须使用单引号完成,如equalsIgnoreCase'user'

3那么,我如何使值条件为真,对于 “isProjectOpened”。为什么一个条件为真,另一个条件为假。

当您尝试时

<s:property value="%{#session.userType.equalsIgnoreCase(user)}"/>;
这意味着用户是一个变量,如果它找到变量的值,那么只有它才是真的

在您正在使用的下一个位置 ; 这是一件紧身衣,所以你将成为真正的vale。

用户是某个对象的符号。如果您没有定义它,它将被视为null

“user”是字符串文本


我不明白关于我项目的问题。如果这是一个正确的字符串,那么为什么它不这样打印呢?但是如果可以的话,考虑把它变成一个BoOL。条件句更好

一,。equalsIgnoreCasetrue~>equalsIgnoreCasetrue.toString->equalsIgnoreCase'true'。2.equalsIgnoreCaseuser->equalsIgnoreCaseuser.toString->equalsIgnoreCasenull,因为您没有用户变量。因此它会检查变量true是否有值,如果没有与该变量关联的值,则采用布尔值。我说的对吗?true是一个文本,所以它不能是变量名。@AleksandrM感谢您澄清我的疑问。isProjectOpened也是一个值为true的字符串。当我直接比较isProjectOpened.equalsIgnoreCasetrue时,我得到的结果是true,请注意,这里没有引号。如果我加上引号,我还是会认为是真的。所以我的问题是,我如何使用isProjectOpened,将true等于true,user等于user与false进行比较?@anandmohan:你看到我的评论了吗?