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

时间:2015-08-28 05:57:10

标签: java jsp struts2

我有2个字符串变量' userType '和'isOpened'。 isOpened的值为'true',userType为'user'两者值为类型字符串

当我在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。

我按照以下 <s:property value="%{#session.userType.equalsIgnoreCase('user')}"/>;

进行一项小改动

我将值设为 user and true。

我的问题是: 1)我可以直接使用字符串'user',如“ equalsIgnoreCase(user)”而不定义字符串。

定义字符串含义  使用<s:set var="user">user</s:set>

2)如果是,那么我可以像上面那样直接进行,或者必须使用像“ equalsIgnoreCase('user')

3)然后我如何让值条件变为真,对于 'isProjectOpened'。为什么我得到一个条件是真的而另一个条件是假的

2 个答案:

答案 0 :(得分:0)

当你尝试

<s:property value="%{#session.userType.equalsIgnoreCase(user)}"/>;

这意味着用户是一个变量,如果它找到变量的值,那么它只会是真的。

您正在使用的下一个地方  <s:property value="%{#session.userType.equalsIgnoreCase('user')}"/>; 这是一个字符串(在外套中),这样你就会变成真实的。

答案 1 :(得分:0)

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

'user'是一个字符串文字。

我不明白有关isProjectOpened的问题。如果那是一个包含"true"的字符串,那为什么它不会这样打印?但如果可以,请考虑将其更改为bool。更适合条件。