adf声明组件自定义方法queueEvent()不起作用

时间:2015-05-07 13:36:11

标签: oracle-adf jdeveloper

我正在使用Oracle ADF JDev 12.1.3

我有一个自定义声明的LOV组件和一个自定义方法" valueChangeEvent", 用户从弹出窗口中选择一些值后,我会做一些验证,如果所有验证都没问题,那么我需要提高" valueChangeEvent"事件, 因此,在最终的jspx页面中,可以实现其他逻辑,

我的声明性组件方法定义如下

           <method-attribute>
                <attribute-name>
                    valueChangeListener
                </attribute-name>
                <method-signature>
                    java.lang.Void method(javax.faces.event.ValueChangeEvent)
                </method-signature>
                <required>
                    false
                </required>
            </method-attribute>

在我的自定义LOV组件中,我有一个输入文本和按钮,我尝试以下方法在命令按钮操作中调用我的自定义方法,但它不会在主窗体中调用该事件,但没有错误显示

// get the component reference using Face Context ValueExpression 
_this = getThisDeclarativeCompoent();
//try to queue the valueChangeEvent - but this does not work
_this.queueEvent(new ValueChangeEvent(_this, NewValue, OldValue));

使用应用程序代码如下

<af:declarativeComponent viewId="/ASGLOVBrowser.jspx" id="dc3" label="Modules" LOV_Name="MODULE"
                                     bindingAttribute="#{bindings.ModuleId}" showDescription="true"
                                     multiSelect="false" matchingField="CODE"
                                     valueChangeListener="#{viewScope.DeclarativeTestBean.test_valueChangeEvent}"/>

感谢有人可以提供帮助......

1 个答案:

答案 0 :(得分:0)

当输入值发生更改时,框架仅引发值更改事件,因此,如果没有从UI或以编程方式更改值,则无法启动事件。

因此,您可以获取输入文本UIComponent的引用并以编程方式更改值:

RichInputText uiComp = <<<get reference>>>;
uiComp.setValue(newValue);