在ADF中使用JavaScript的技巧

来源:互联网 发布:mmap 内核源码分析 编辑:程序博客网 时间:2024/05/22 07:43
关键字:ADF,JavaScript,JS,JSF

在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定义在双击鼠标的时候触发事件。

<af:clientListener method="setFocus" type="dblClick"/>

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


原创粉丝点击