gpt4 book ai didi

javascript - 如何使用脚本执行自动单击jsf中的命令按钮

转载 作者:行者123 更新时间:2023-11-30 18:20:07 25 4
gpt4 key购买 nike

我有一种情况,我必须在以下 JSF 页面中的页面加载时执行 commandButton Action 监听器

        <?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"
xmlns:trh="http://myfaces.apache.org/trinidad/html">
<jsp:directive.page contentType="text/html;charset=UTF-8"/>

<f:view>

<af:document id="d1" partialTriggers="pt1">
<af:resource type="javascript">
function callCustomButton(){
var button =AdfPage.PAGE.findComponentByAbsoluteId("cbCustomFields");
ActionEvent.queue(button,true);
}
</af:resource>



<af:clientListener method="callCustomButton" type="load"/>

<af:form id="f1">
<af:pageTemplate viewId="/ESOPM_Base_Template.jspx" id="pt1">



<f:facet name="main_content">

<af:decorativeBox id="db1" theme="medium">
<f:facet name="top"/>
<f:facet name="center">
<af:panelGroupLayout layout="scroll" id="pgl2">
<trh:tableLayout id="tblUpload" cellPadding="3" cellSpacing="3" halign="center" inlineStyle="font-size:1.2em; font-weight:bold; font-family:helvetica,sans-serif;">
<trh:rowLayout id="rl1">

<trh:cellFormat id="cf1">
<af:panelGroupLayout layout="horizontal" id="pgl3">

<af:commandButton text="Custom Fields"

actionListener="#{EditProperties.generateCustomAttributeFields}"
id="cbCustomFields" partialSubmit="true" visible="true"/>
</af:panelGroupLayout>
</trh:cellFormat>
</trh:rowLayout>

</trh:cellFormat>
</trh:rowLayout>

</trh:tableLayout>
</af:panelGroupLayout>
</f:facet>
</af:decorativeBox>
</f:facet>
</af:pageTemplate>
</af:form>
</af:document>
</f:view>

</jsp:root>

命令按钮是“自定义字段”,我试图通过客户端监听器在页面中使用的 javascript 来调用它。但是,当用户加载此页面时,该按钮不会被单击,并且不会执行其 Action 监听器操作。请帮忙。

最佳答案

在 f:view(托管 bean)中创建一个 afterMethod 并监听 RENDER_RESPONSE 阶段。然后通过调用

来调用 JS
String script = "callCustomButton();";
FacesContext fctx = FacesContext.getCurrentInstance();
//Trinidad class
ExtendedRenderKitService erks = null;
//Service also is a Trinidad class
erks = Service.getRenderKitService(fctx, ExtendedRenderKitService.class);
erks.addScript(fctx, script);

确保通过在 View 范围内设置内存标志来避免重复调用

弗兰克附言您是否尝试过在服务器上调用该函数在托管 bean(监听器)中排队操作事件

关于javascript - 如何使用脚本执行自动单击jsf中的命令按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12279007/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com