2012-05-06 2 views
20

조건부 연산자는 "렌더링 된" "값"등의 많은 특성에서 작동합니다.action 속성에서 EL 조건 연산자를 사용할 수 있습니까?

하지만 실제로 작동하지 않습니까? 아니면 내가 잘못하고있는거야?

<h:commandLink action="#{true ? bean.methodTrue() : bean.methodFalse()}"/> 

오류 : javax.el.ELException : 유효한 방법의 표현

(나는 primefaces에게 아약스 액션 속성을 사용하여 실현)이 지원되지 않습니다

+1

이것에 의하면, [EL 조건부 방법 식 (http://stackoverflow.com/questions/5433876/el-conditional-method-expression) – Fallup

+0

덕분이 가져 희망 불가능 향후 업데이트에서 해결됨 – djmj

답변

44

. 속성은 MethodExpression으로되어 있지만 조건부 연산자는 ValueExpression 구문으로 만듭니다. 나는 이것이 EL에서 MethodExpression에 대해 지원 될 것이라고 생각하지 않습니다.

  1. 이있는 대의원 작업을 단일 작업 방법을 만들기 :

    당신은 기본적으로 2 가지 옵션이 있습니다.

    public String method() { 
        return condition ? methodTrue() : methodFalse(); 
    } 
    

    필요하다면

    <h:commandButton ... action="#{bean.method}" /> 
    

    #{bean.method(condition)} 방법에 의해 인자로의 전달.

  2. 또는 조건부로 2 개의 버튼을 렌더링하십시오.

    <h:commandButton ... action="#{bean.methodTrue}" rendered="#{bean.condition}" /> 
    <h:commandButton ... action="#{bean.methodFalse}" rendered="#{not bean.conditon}" /> 
    
+1

언제나처럼 좋은 대답 – hendrix

+0

무엇이 좋을까요? – alexander

+1

@Alex : 귀하의 모델에 가장 잘 맞는 방법. 그러나 두 번째 방법은 조건을 요청에 보존해야한다는 추가 요구 사항이 있습니다.이 조건은 뷰 범위에 bean을 배치하여 얻는 것이 가장 좋으며, 그렇지 않으면 http : // stackoverflow에서 # 5로 설명하는 문제에 직면하게됩니다. com/questions/2118656/commandlink-commandbutton-ajax-backing-bean-action-listener-method-not-invoked – BalusC

관련 문제