Показывать компонент Richfaces при выборе события - PullRequest
0 голосов
/ 10 ноября 2011

Я хотел бы знать, как я могу получить значение моего компонента jsf, когда выполняется событие. Например, рассмотрим этот компонент:

<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>

Я хочу условно выполнить a4j:ajax для события изменения, чтобы при выполнении компонентом события selectitem и, таким образом, установки значения, событие change было обойдено. Однако это не работает, какие-либо предложения или способ сделать то, что мне нужно?

1 Ответ

1 голос
/ 10 ноября 2011
onchange="if(!#{rich:component('selectEmpresa')}.getValue()) return false;"

Это выражение оценивается при визуализации представления, а не при выполнении события DOM (проверьте сгенерированный источник HTML, чтобы увидеть его самостоятельно). Вы должны будете использовать JavaScript вместо этого, чтобы получить текущее значение. Следующее должно сделать:

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

или просто

onchange="return !!value;"
...