在ADF的JSPX页面中可以配合使用clientListener和serverListener,在JSPX的非命令控件(如af:inputText)中添加clientListener事件监听,并将事件的业务逻辑操作定义到MangedBean中,完成VO的查询等。
1,JSPX页面中对JavaScript函数的引用,将af:resource或trh:script标签放在af:document内。
1)可以将JavaScript函数直接定义在JSPX页面中
<trh:script id="s10">
function doDoubleClick(event) {
var source = event.getSource();
AdfCustomEvent.queue(source, "doDbClick",{},false);
}
</trh:script>
2)在JSPX页面中引用.js文件中定义好的JavaScript函数
<af:resource type="javascript" source="/js/xxxx.js"/>
2,使用af:clientListener调用JavaScript函数
setFocus是JavaScript函数,type定义在双击鼠标的时候触发事件。
3,结合clientListener 和serverListener 。
1)使用clientListener 捕获页面事件,例如回车,并定义类型给serverListener
function doEnterKeyDown(event) {
if (AdfKeyStroke.ENTER_KEY == event.getKeyCode()) {
var source = event.getSource();
AdfCustomEvent.queue(source, "doEnterKeyDown", {}, false);
}
}
2)在输入框中添加clientListener和serverListener
<af:inputText label="#{res['searchSalesOrder.column.SO_COMPANY']}"
id="itCompany"
value="#{bindings.SoCompany1.inputValue}"
columns="#{bindings.SoCompany1.hints.displayWidth}"
maximumLength="#{bindings.SoCompany1.hints.precision}"
autoSubmit="true"
partialTriggers="itCompany selectCompanyDialog"
showRequired="true"
disabled="#{viewScope.backing_createSO.strPageMode eq 'I' ? false: true}">
<f:validator binding="#{bindings.SoCompany1.validator}"/>
<af:clientListener method="doEnterKeyDown" type="keyDown"/>
<af:serverListener type="doEnterKey"
method="#{viewScope.backing_createSO.doEnterKeyCompanyListener}"/>
</af:inputText>
3)在Manged Bean(backing_createSO)中添加doEnterKeyCompanyListener方法
public void doEnterKeyCompanyListener(ClientEvent clientEvent) {
//查询客户
DCIteratorBinding dcIter =
ADFUtils.findIterator("CustomerLVOIterator");
ViewObject vo = dcIter.getViewObject();
Object objCompany = ADFUtils.getBoundAttributeValue("SoCompany1");
vo.setNamedWhereClauseParam("varCom", objCompany);
vo.executeQuery();
//其他操作
... ...
}
参考:
http://jdevadf.oracle.com/adf-richclient-demo/docs/tagdoc/af_clientListener.html
http://jdevadf.oracle.com/adf-richclient-demo/docs/tagdoc/af_serverListener.html