ADF Jdeveloper - 在 JSP 上使用 javascript 执行按钮点击
ADF Jdeveloper - Perform click on button using javascript on JSP
我正在尝试使用 javascript 在按钮中执行单击,我想在支持 bean 中执行一个应该 运行 的方法。
这是我的资源
<af:resource type="javascript">
function closePopup(event) {
//var dialog = event.getSource();
//var popup = dialog.findComponent("pt1:b17");
//console.log(popup);
//popup.click();
//$("#pt1:b17").trigger("click");
//popup.hide();
//event.cancel(); document.getElementById('pt1:b17')
console.log("trigger the event");
eventFire(document.getElementById(AdfPage.PAGE.findComponentByAbsoluteId('pt1:b17').getClientId()), 'click');
}
function eventFire(el, etype) {
if (el.fireEvent) {
console.log("true");
el.fireEvent('on' + etype);
}
else {
console.log("false");
var evObj = document.createEvent('Events');
evObj.initEvent(etype, true, false);
el.dispatchEvent(evObj);
}
}
</af:resource>
现在这是我的 jsp 代码:
<af:group id="g4">
<af:commandButton text="Aceptar" id="b17">
<af:fileDownloadActionListener contentType="excelHTML" filename="#{viewScope.mbFiles.file_name}" method="#{viewScope.mbFiles.generateFile}"/>
</af:commandButton>
<af:button text="test" id="buttonTest">
<af:clientListener method="closePoPup" type="action"/>
</af:button>
</af:group>
我无法触发下载文件的方法。
提前致谢。
我post另一个问题的答案:
代码是这样的:
Java中的方法:
public void prepareForDownloadAction(ActionEvent act) {
FacesContext context = FacesContext.getCurrentInstance();
ExtendedRenderKitService erks =
Service.getService(context.getRenderKit(),
ExtendedRenderKitService.class);
erks.addScript(context, "customHandler();");
}
现在这是我在 Java脚本中的方法:
<af:resource type="javascript">
function customHandler(evt) {
console.log(evt);
var exportCmd = AdfPage.PAGE.findComponentByAbsoluteId("pt1:b17");
console.log(exportCmd);
var actionEvent = new AdfActionEvent(exportCmd);
console.log(actionEvent);
actionEvent.forceFullSubmit();
actionEvent.noResponseExpected();
actionEvent.queue(false);
setTimeout(function(){hidePopup();}, 1000);
}
function hidePopup() {
var popup = AdfPage.PAGE.findComponent("pt1:popupAceptarDescargarPlantilla::content");
popup.hide();
}
</af:resource>
你们好。
我正在尝试使用 javascript 在按钮中执行单击,我想在支持 bean 中执行一个应该 运行 的方法。
这是我的资源
<af:resource type="javascript">
function closePopup(event) {
//var dialog = event.getSource();
//var popup = dialog.findComponent("pt1:b17");
//console.log(popup);
//popup.click();
//$("#pt1:b17").trigger("click");
//popup.hide();
//event.cancel(); document.getElementById('pt1:b17')
console.log("trigger the event");
eventFire(document.getElementById(AdfPage.PAGE.findComponentByAbsoluteId('pt1:b17').getClientId()), 'click');
}
function eventFire(el, etype) {
if (el.fireEvent) {
console.log("true");
el.fireEvent('on' + etype);
}
else {
console.log("false");
var evObj = document.createEvent('Events');
evObj.initEvent(etype, true, false);
el.dispatchEvent(evObj);
}
}
</af:resource>
现在这是我的 jsp 代码:
<af:group id="g4">
<af:commandButton text="Aceptar" id="b17">
<af:fileDownloadActionListener contentType="excelHTML" filename="#{viewScope.mbFiles.file_name}" method="#{viewScope.mbFiles.generateFile}"/>
</af:commandButton>
<af:button text="test" id="buttonTest">
<af:clientListener method="closePoPup" type="action"/>
</af:button>
</af:group>
我无法触发下载文件的方法。
提前致谢。
我post另一个问题的答案:
代码是这样的:
Java中的方法:
public void prepareForDownloadAction(ActionEvent act) {
FacesContext context = FacesContext.getCurrentInstance();
ExtendedRenderKitService erks =
Service.getService(context.getRenderKit(),
ExtendedRenderKitService.class);
erks.addScript(context, "customHandler();");
}
现在这是我在 Java脚本中的方法:
<af:resource type="javascript">
function customHandler(evt) {
console.log(evt);
var exportCmd = AdfPage.PAGE.findComponentByAbsoluteId("pt1:b17");
console.log(exportCmd);
var actionEvent = new AdfActionEvent(exportCmd);
console.log(actionEvent);
actionEvent.forceFullSubmit();
actionEvent.noResponseExpected();
actionEvent.queue(false);
setTimeout(function(){hidePopup();}, 1000);
}
function hidePopup() {
var popup = AdfPage.PAGE.findComponent("pt1:popupAceptarDescargarPlantilla::content");
popup.hide();
}
</af:resource>
你们好。