문제

'항목'이라는 객체가 있습니다. 'type'이라는 속성이 있습니다.

내가 이것을 할 때 :

<s:property value="item.type" />

나는 이것을 얻는다 : q

좋아, 그래서 나는 값을 읽을 수 있지만, 이것을 시도 할 때 :

<s:property value="item.type == 'Q'" /> 

나는 빈 줄을 얻는다

이것은 나에게 빈 줄을 준다 :

<s:property value="%{#item.type == 'Q'}" />

나는 이것을 시도했다 :

<s:property value="item.type.equals('Q')" />

그러나 나는이 끈을 얻었다 : false

'true'를 얻는 방법은 무엇입니까?

도움이 되었습니까?

해결책

좋아, 나는 이것으로 영원히 고투했고, 결국 어떻게 해야하는지 알아 냈다. "Q"는 문자열 리터럴 대 'Q'입니다. 그러므로...

<s:if test="%{#item.type == 'Q'}">

항상 거짓으로 평가합니다. 대신 시도해보세요 ...

<s:if test="%{#item.type == \"Q\"}">

나는 또한 이런 식으로 한 것을 보았다 ...

<s:if test='%{#item.type == ("Q")}'>

(테스트 속성 값 주변의 단일 따옴표에 주목하십시오.)

Ognl은 내 편에서 가시입니다. 나는 OP가 이미 이것을 알아 냈다고 생각합니다. 그러나 희망적으로 이것은 다른 사람을 돕습니다.

다른 팁

나는 당신 이이 태그의 값 속성에 EL을 넣을 수 있다고 생각하지 않습니다. 당신은 다음과 같은 것으로 달성 할 수 있습니다.

<s:if test="%{#item.type == 'Q'}">
  true
</s:if>
<s:else>
  false
</s:else>

이것의 더 많은 예입니다 여기

참고 -보기에는 프리 마커를 사용하므로 위의 정확한 것이 정확하지 않을 수 있습니다. Freemarker에서는 할당으로 이것을 할 수 있습니다.

<#assign val = (item.type == 'Q')/>
${val}

또는 위와 같은 IF 구조를 사용할 수도 있습니다.

<#if (item.type == 'Q')>true<#else>false</#if>
<s:set name="prop" value="%{'val'}"/>

<s:if test="%{#prop == 'val'}">
  <s:property value="%{#prop}" />
</s:if>

<s:elseif test="%{#prop=='val1'}">
  <s:property value="%{#prop}" />
</s:elseif>

<s:else>
  ...
</s:else>

간단합니다.

<s:property value='item.type == "Q"' />

단일 따옴표를 이중 따옴표로 바꾸면됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top