2011-11-10 5 views
0

이벤트가 실행될 때 jsf 구성 요소 값을 검색하는 방법을 알고 싶습니다. 내가 원하는 것은 구성 요소가 selectitem 이벤트를 실행하고, 따라서 값을 설정할 때 있도록 조건부, 변경 이벤트에 대한 a4j:ajax을 실행하는 것입니다이벤트 선택시 Richfaces 표시 구성 요소

<rich:select id="selectEmpresa" 
    value="#{macroprocesoController.empresaSeleccionada}" 
    converter="genericConverter" enableManualInput="true" onchange="if(!#{rich:component('selectEmpresa')}.getValue()) return false;"> 
    <f:selectItems value="#{selectItemsController.empresaItems}" /> 
    <a4j:ajax execute="@this" render="macroProcesosTable" event="selectitem" listener="#{macroprocesoController.empresaSelectedListener}"></a4j:ajax> 
    <a4j:ajax execute="@this" render="macroProcesosTable" event="change" listener="#{macroprocesoController.empresaSelectedListener}"></a4j:ajax> 
</rich:select> 

change 이벤트가 무시됩니다 예를 들어이 구성 요소를 고려한다. 그러나 이것은 작동하지 않습니다, 어떤 제안이나 내가 필요로하는 것을 할 수있는 방법?

답변

1
onchange="if(!#{rich:component('selectEmpresa')}.getValue()) return false;" 

이 표현식은 뷰가 렌더링 될 때 평가되며 DOM 이벤트가 실행될 때 평가되지 않습니다 (생성 된 HTML 소스를 직접 확인하여 확인하십시오). 대신 현재 값을 얻기 위해 JavaScript를 사용해야합니다. 다음은 수행해야합니다

onchange="if (!this.value) return false;" 

하거나

onchange="return !!value;"