Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 在事件选择上显示Richfaces组件_Jsf_Jsf 2_Richfaces - Fatal编程技术网

Jsf 在事件选择上显示Richfaces组件

Jsf 在事件选择上显示Richfaces组件,jsf,jsf-2,richfaces,Jsf,Jsf 2,Richfaces,我想知道在执行事件时如何检索jsf组件值。例如,考虑这个组成部分: <rich:select id="selectEmpresa" value="#{macroprocesoController.empresaSeleccionada}" converter="genericConverter" enableManualInput="true" onchange="if(!#{rich:component('selectEmpresa')}.getValue()) ret

我想知道在执行事件时如何检索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
事件将被绕过。然而这不起作用,有什么建议或方法来做我需要的吗

onchange="if(!#{rich:component('selectEmpresa')}.getValue()) return false;"
该表达式是在呈现视图时计算的,而不是在执行DOM事件时计算的(请检查生成的HTML源代码以亲自查看)。您需要使用JavaScript来获取当前值。应采取以下措施:

onchange="if (!this.value) return false;"
或者只是

onchange="return !!value;"