2011-02-14 4 views
6

뒷받침 빈이 반환 한 String 속성에 따라 <h:outputText> 또는 <h:commandLink>을 표시하려고합니다.<c:if>과 2 개의 문자열을 비교하는 방법은 무엇입니까?

<c:if test='#{column.header ne "Details"}'> 
    <h:outputText value="#{recordTable[column.property]}"/><br/> 
</c:if> 
<c:if test='#{column.header eq "Details"}'> 
    <h:commandLink value="#{column.header}" 
        action="#{searchBean.goToWarehouse}"/><br/> 
</c:if> 

비교가 작동하지 않습니다 그러나 다음 문자열을 비교할 때 내가하는 데 문제가 .. 다음은 그림이다. 이것을 올바른 방법일까요 ?? 당신은 <h:dataTable>이를 사용하는 것 도움

답변

10

에 대한 JSP sample

감사 :에서 수행으로 은이 <jsp:useBean....>없이 할 수 있습니다. JSTL 태그는 뷰 작성시에만 평가되며 뷰 렌더링 시간에는 평가되지 않습니다. JSTL은 처음부터 끝까지 위에서 아래로 실행 한 다음 생성 된 결과를 위에서 아래로 다시 실행하기 위해 JSF로 전달합니다. JSTL 태그가 JSF 데이터 테이블에서 평가되는 순간, 데이터 테이블의 반복 항목 (var 속성의 항목)은 JSTL에서 사용할 수 없습니다. 따라서 테스트 결과는 항상 false입니다.

대신 JSF 컴포넌트의 rendered 속성을 사용하십시오.

<h:outputText value="#{recordTable[column.property]}" rendered="#{column.header ne 'Details'}"/> 
<h:commandLink value="#{column.header}" rendered="#{column.header eq 'Details'}" action="#{searchBean.goToWarehouse}"/> 
<br/> 

여기 당신이 rendered 속성을 활용할 수있는 방법을 몇 가지 더 예 : 구체적인 문제에 관련없는

<h:someComponent rendered="#{bean.booleanValue}" /> 
<h:someComponent rendered="#{bean.intValue gt 10}" /> 
<h:someComponent rendered="#{bean.objectValue == null}" /> 
<h:someComponent rendered="#{bean.stringValue != 'someValue'}" /> 
<h:someComponent rendered="#{!empty bean.collectionValue}" /> 
<h:someComponent rendered="#{!bean.booleanValue and bean.intValue != 0}" /> 
<h:someComponent rendered="#{bean.enumValue == 'ONE' or bean.enumValue == 'TWO'}" /> 

이 Roseindia는 not 최고의 JSF 학습 자원이다. 다른 리소스로 이동하는 것이 좋습니다.

+0

저는 우리 팀의 Java Arquitect와 상담했으며, 저와 똑같은 답변을 저에게 정확히 전했습니다. 대답 해 주셔서 감사합니다! :) – camiloqp

+0

당신을 진심으로 환영합니다. – BalusC

+0

http://balusc.blogspot.in/2008/06/what-is-it-with-roseindia.html – KNU

관련 문제