JSF:在成功创建后调用javascript

JSF:在成功创建后调用javascript,jsf,Jsf,我现在的代码 <h:form> <h:panelGroup id="messagePanel" layout="block"> <h:messages errorStyle="color: red" infoStyle="color: green" layout="table"/> </h:panelGroup> <h:panelGrid columns="2"> // some fo

我现在的代码

<h:form>
   <h:panelGroup id="messagePanel" layout="block">
       <h:messages errorStyle="color: red" infoStyle="color: green" layout="table"/>
   </h:panelGroup>
    <h:panelGrid columns="2">

        // some form input stuff here..

    </h:panelGrid>         

   <h:commandButton class="register-btn" action="#{accountController.create}" value="#{bundle.Register}">
        <f:ajax event="action" execute="@form" render="messagePanel"/>
   </h:commandButton>                       
</h:form>
成功创建后是否可以调用javascript?目前我的创建表单是一个弹出模式,我想要的是在成功创建后隐藏该模式,而不是重定向到页面


我使用的是JSF2.1,您可以在托管bean中为对话框创建组件绑定,并使用该绑定对函数隐藏对话框。我认为表示组件绑定的对象类型是特定于框架的(尽管它们可能都扩展了UIComponent),因此需要指定用于完整解决方案的JSF实现。例如,我在ADF中实现了这个用例

这是ADF的一个示例:

在托管bean中:

丰富的弹出窗口

在save()上的public void{
//保存用户
myPopup.hide();
}

使用标准JSF(请阅读:没有任何组件库或实用程序库,如PrimeFaces或OmniFaces,可以使这更容易),您最好的选择是有条件地呈现
元素

<h:panelGroup id="script">
    <h:outputScript rendered="#{not empty accountController.currentUser.id}">
        alert('User successfully created!');
    </h:outputScript>
</h:panelGroup>

警报(“用户已成功创建!”);

中引用它要清楚,您想在重定向的
/index.xhtml
页面中调用一些JS吗?如果您将用户重定向到
index.xhtml
,则该页面上不存在您的对话框。你将隐藏什么?不,目前我的代码在创建后重定向页面,我不想要这个。相反,在同一页上,我只想关闭包含表单的弹出模式。这看起来更像是一条评论,而不是一个直接的答案。哦,嗯。。如果我使用素面?有更简单、更有效的方法吗?
RequestContext\execute()
。顺便说一句你不会说“我喜欢你的脸”。卡加泰公民是唯一这样做的人。你应该说“我使用PrimeFaces”或“我安装PrimeFaces”。
<h:panelGroup id="script">
    <h:outputScript rendered="#{not empty accountController.currentUser.id}">
        alert('User successfully created!');
    </h:outputScript>
</h:panelGroup>