Java AdfPage.PAGE.findComponentByAbsoluteId返回null
我试图在页面呈现过程中执行一些javascript。 代码是: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">
<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>