我正在使用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}"/>
感谢有人可以提供帮助......
答案 0 :(得分:0)
当输入值发生更改时,框架仅引发值更改事件,因此,如果没有从UI或以编程方式更改值,则无法启动事件。
因此,您可以获取输入文本UIComponent的引用并以编程方式更改值:
RichInputText uiComp = <<<get reference>>>;
uiComp.setValue(newValue);