Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.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
Java AdfPage.PAGE.findComponentByAbsoluteId返回null_Java_Javascript_Oracle11g_Oracle Adf - Fatal编程技术网

Java AdfPage.PAGE.findComponentByAbsoluteId返回null

Java AdfPage.PAGE.findComponentByAbsoluteId返回null,java,javascript,oracle11g,oracle-adf,Java,Javascript,Oracle11g,Oracle Adf,我试图在页面呈现过程中执行一些javascript。 代码是: <af:document title="Page1" id="d1"> <af:resource type="javascript" source="/resources/js/jquery-1.3.2.js"/> <af:form id="f1"> <af:panelStretchLayout id="psl1">

我试图在页面呈现过程中执行一些javascript。 代码是:

    <af:document title="Page1" id="d1">
        <af:resource type="javascript" source="/resources/js/jquery-1.3.2.js"/>
        <af:form id="f1">
            <af:panelStretchLayout id="psl1">
                <f:facet name="center">
                    <af:panelGroupLayout id="pgl1">                            
                        <af:panelGroupLayout id="main" styleClass="AFStretchWidth" layout="vertical" clientComponent="true">
                            <af:clientListener method="onMainClick" type="click"/>
            <af:serverListener type="clickOnMain" method="#{bean.someMethod}"/>
                        </af:panelGroupLayout>                                  
                    </af:panelGroupLayout>
                </f:facet>
            </af:panelStretchLayout>

            <af:resource type="javascript">
        var main = AdfPage.PAGE.findComponentByAbsoluteId('main');
        alert(main);
        if(main != null) {
            ActionEvent.queue(main, true);
        }
            </af:resource>
    <af:resource type="javascript">
        onMainClick = function (event) {
            AdfCustomEvent.queue(event.getSource(), "clickOnMain",  {}, true);
        }
            </af:resource>
        </af:form>            
    </af:document>

var main=AdfPage.PAGE.findComponentByAbsoluteId('main');
警报(主);
如果(主!=null){
ActionEvent.queue(main,true);
}
onMainClick=函数(事件){
队列(event.getSource(),“clickOnMain”,{},true);
}
但是alert()显示为“null”,最终下一个ActionEvent.queue将不执行


有人能告诉我如何解决这个问题吗?

看来你找到了解决方案


onBodyLoad=功能(事件){
fireEvent(document.getElementById(AdfPage.PAGE.findComponentByAbsoluteId('main').getClientId(),'click');
}
fireEvent=函数(元素,事件类型){
if(element.firevent){
元素。fireEvent('on'+eventType);
}
否则{
var eventObj=document.createEvent('Events');
initEvent(eventType,true,false);
元素。dispatchEvent(eventObj);
}
}
onMainClick=函数(事件){
ADFCustomeEvent.queue(event.getSource(),“clickOnMain”,
{
},对);
}

是的,我找到了。我在代码中做的一个修改是使用navigator.userAgent添加了一个验证,以验证fireEvent中的MSIE。
<?xml version='1.0' encoding='UTF-8'?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1" xmlns:f="http://java.sun.com/jsf/core" xmlns:af="http://xmlns.oracle.com/adf/faces/rich">
  <jsp:directive.page contentType="text/html;charset=UTF-8"/>
  <f:view>
    <af:document title="Page1" id="d1" clientComponent="true">
      <af:resource type="javascript" source="/resources/js/jquery-1.3.2.js"/>
      <af:form id="f1">
        <af:panelStretchLayout id="psl1">
          <f:facet name="center">
            <af:panelGroupLayout id="pgl1">
              <af:panelGroupLayout id="main" styleClass="AFStretchWidth" layout="vertical" clientComponent="true">
                <af:clientListener method="onMainClick" type="click"/>
                <af:serverListener type="clickOnMain" method="#{college.onLoad}"/>
              </af:panelGroupLayout>
            </af:panelGroupLayout>
          </f:facet>
        </af:panelStretchLayout>
      </af:form>
      <af:resource type="javascript">
        onBodyLoad = function (event) {
            fireEvent(document.getElementById(AdfPage.PAGE.findComponentByAbsoluteId('main').getClientId()), 'click');
        }
        fireEvent = function (element, eventType) {
            if (element.fireEvent) {
                element.fireEvent('on' + eventType);
            }
            else {
                var eventObj = document.createEvent('Events');
                eventObj.initEvent(eventType, true, false);
                element.dispatchEvent(eventObj);
            }
        }
        onMainClick = function (event) {
            AdfCustomEvent.queue(event.getSource(), "clickOnMain", 
            {
            },true);
        }
      </af:resource>
      <af:clientListener method="onBodyLoad" type="load"/>
    </af:document>
  </f:view>
</jsp:root>