2012-08-29 2 views
1

이 문제에 대한 해결책이 Struts2에 있습니까?struts2 switch 문

<s:if test="%{var < 50}"> 
    <p style="color: red;">The quick brown fox jumped over the lazy brown dog.</p> 
</s:if> 
<s:elseif test="%{var == 50}"> 
    <p style="color: blue;">The quick brown fox jumped over the lazy brown dog.</p> 
</s:elseif> 
<s:elseif test="%{var > 50}"> 
    <p style="color: pink;">The quick brown fox jumped over the lazy brown dog.</p> 
</s:elseif> 

이상적으로 나는 여기에 switch 문을 사용하고 싶지만 존재하지 않는 것으로 보입니다. 사소한 변경으로 같은 줄을 입력하는 대신 다른 적합한 해결책이 있습니까?

+0

Ruby on Rails 및 HAML : Heaven – Chloe

답변

2

예, 변수를 설정하고 style 속성에서 변수를 참조하십시오.

이것은 Struts 2와 특별히 관련이 없습니다. 이는 상식 리팩토링입니다.

나는 당신의 유스 케이스를 모르겠지만, 나는 그것이 더 단계를 촬영 볼 원합니다 다음 var 값은 "에서, 동등 이상"또는 뭔가처럼, 응용 프로그램에 것을 의미한다. 값을 직접 CSS 속성에 연결하는 대신 응용 프로그램 수준의 의미를 HTML에서 모두 염두에 두십시오. CSS를보다 적절하게 (그리고보다 유연하게) 사용하여 동일한 작업을 수행하십시오.

<p class="${answerClass}">The quick brown fox jumped over the lazy brown dog.</p> 

CSS : 내가 가지고있는 것들에 대해 너무 큰를 "반대"규모의 끝이 반 직관적 나를 파업에 대한 핑크와 레드를 사용하여 색상을 변경하지

under: { 
    color: red; 
} 

equal: { 
    color: blue; 
} 

greater: { 
    color: green; 
} 

주 해당 색상 범위의 색맹.

는 JSP에 존재하는 수 있지만 임베디드 있다면보다 IMO는이 테스트 방법의보다 다양한에 쥐게 될 수있는 응용 프로그램의 자바 코드에 넣어 쉽게 CSS 클래스 이름을 선택하는 로직 뷰 레이어에서.

+0

이것은 내가 제시 할 수있는 최상의 예가 아니 었습니다. 기본적으로 테이블이 있고 각 셀의 값에 따라 녹색, 호박색 또는 빨간색으로 표시해야합니다.이 값은 Action이 아닌 JSP에서 확인해야합니다. – user1628194

+0

@ user1628194 내가 말한 모든 것은 여전히 ​​유효합니다. 프레젠테이션 세부 정보를 응용 프로그램 의미론 (AFAICT)과 통합합니다. 어떤 경우 든 다른 값을 기반으로 값을 설정하는 것은 사용자가해야 할 일의 근원입니다. 나는 당신이 그것을하고있는 수준이 부서지기 쉽고 근본적으로 고장 났다고 믿는다. 그러나 그것은 리팩토링 자체와는 별개의 문제이다. –

1

작업에서 논리 부분을 사용하는 것이 더 좋습니다. 따라서 메소드의 색상 값을 평가하십시오.

하지만 JSP에서이 작업을 수행해야하는 경우는이 수행 할 수 있습니다 HTML의 반복을 피하기 위해

<p style="color: 
    <s:if test="%{var < 50}"> 
     red 
    </s:if> 
    <s:elseif test="%{var == 50}"> 
     blue 
    </s:elseif> 
    <s:elseif test="%{var > 50}"> 
     pink 
    </s:elseif> 
;" >The quick brown fox jumped over the lazy brown dog.</p> 

그냥 길을. (DRY 원칙)

+0

"행동의 논리 부분"을 사용하여 답변을 업데이트 할 수 있습니까? – Stephan