我试图使用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>
我无法触发下载文件的方法。
提前致谢。
答案 0 :(得分:0)
我在另一个问题上发布了答案:
https://stackoverflow.com/a/41708683/5120410
代码是这样的:
Java中的方法:
DECLARE
table_details_cursor SYS_REFCURSOR;
tab_name ALL_TAB_COLUMNS.table_name%TYPE;
col_name ALL_TAB_COLUMNS.column_name%TYPE;
data_type ALL_TAB_COLUMNS.data_type%TYPE;
BEGIN
GET_TABLE_DETAILS (schemaName => 'DUMMY',
table_details => table_details_cursor);
LOOP
FETCH table_details_cursor
INTO tab_name, col_name, data_type;
EXIT WHEN table_details_cursor%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(tab_name || ' | ' || col_name || ' | ' || data_type);
END LOOP;
CLOSE table_details_cursor;
END;
现在这是我在Javascript中的方法:
public void prepareForDownloadAction(ActionEvent act) {
FacesContext context = FacesContext.getCurrentInstance();
ExtendedRenderKitService erks =
Service.getService(context.getRenderKit(),
ExtendedRenderKitService.class);
erks.addScript(context, "customHandler();");
}
Greatings。