2016-07-26 2 views
-1

조치 클래스에 해시 맵이 있습니다. 화면에 특정 텍스트를 표시하기 위해 키가 없는지 확인하려고합니다. 그러나 작동하지 않습니다.해시 맵에 키가 있는지 검사 JSP Struts 2

<s:elseif test="%{#map[getCurrentYear()]==null && #map.key.equalsIgnoreCase(cdKey)}"> 
    <h4> 
     2 
     <s:text name="properties.msg.header" /> 
     <s:property value="currentYear"  /> 
    </h4> 
</s:elseif> 

내가 코드에 문제가 있습니다 것을 얻을 수 없습니다입니다 : 아래의 코드입니다.

+0

'map'이란 무엇입니까? 'getCurrentYear() '란 무엇입니까? '# map.key'는 무엇입니까? 'cdKey'는 무엇입니까? 코드를 보여주십시오. –

+0

주제가 아닙니다. –

+0

@Andrea getter 및 setter를 사용하여 Action 클래스에 정의 된 필드가 있습니다. 개인 문자열 cdKey = 'cdKey'및 전용 문자열 cyQKey = 'cyQKey'. 하나의 해시 맵 -이 키를 저장하고있는 지도가 있습니다. 나는 cyQKey가 맵에 존재하지 않는지 확인하고 cdKey가 있으면 메시지를 표시하려고합니다. \t \t \t \t

\t \t \t \t \t \t \t \t \t \t \t

\t \t \t – JJN

답변

0

map이 getMap() 게터가있는 작업 속성 인 경우 #을 사용할 필요가 없습니다. 또한 getCurrentYear()은 OGNL에서 currentYear이됩니다.

<s:elseif test="%{map[currentYear]==null && map.key.equalsIgnoreCase('cdKey')}"> 

충분하지만,

<s:elseif test="isValueEqualToCdKey" > 
과 더불어,

public boolean isValueEqualToCdKey(){ ... } 

방법, 서버 측하는 경우에이 방법이 더 간단 (우아한)이 될 것이라는 점을주의해야한다

+0

안녕, 위의 솔루션은 나를 위해 작동하지 않았다/. getter 및 setter 메서드가있는지도가 있습니다. private map > map = new LinkedHashMap >(); #didnt work를 제거하십시오 – JJN

+0

먼저, 테스트를 분리하십시오. (s : if/s : else 전에) s : 속성을 연도 테스트와 함께 넣고, 다른 하나는 키 동등성 테스트를 사용하여 어느 것이 실패하는지 확인하십시오. –

+0

s : if와 else를 추가했습니다. S : 시험 = "%가 {맵 [currentYear] == 널}"경우> \t AA \t ABC는 \t ABCDE – JJN

0

If List> map = new LinkedHashMap>(); 은 jsp처럼 호출됩니다

<s:property value="#map.[#key]"/>