Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ajax 如何从bean更新JSF表单?_Ajax_Jsf_Primefaces - Fatal编程技术网

Ajax 如何从bean更新JSF表单?

Ajax 如何从bean更新JSF表单?,ajax,jsf,primefaces,Ajax,Jsf,Primefaces,我试图做的是让用户单击一个按钮,打开一个对话框,询问您想启动吗?是的,不是 如果选择“是”,则数据库中的值设置为1,否则保留为0 一旦他们点击yes,思维导图就会呈现出来——然而,尽管使用了我认为是正确的选项,它还是不起作用。如果我在单击“是”后刷新页面,则会呈现思维导图,但如果可能的话,我希望使用ajax公式 这是我目前的代码: <p:confirmDialog id="confirmDialog" message="Are you sure abou

我试图做的是让用户单击一个按钮,打开一个对话框,询问您想启动吗?是的,不是

如果选择“是”,则数据库中的值设置为1,否则保留为0

一旦他们点击yes,思维导图就会呈现出来——然而,尽管使用了我认为是正确的选项,它还是不起作用。如果我在单击“是”后刷新页面,则会呈现思维导图,但如果可能的话,我希望使用ajax公式

这是我目前的代码:

<p:confirmDialog id="confirmDialog" 
                 message="Are you sure about starting the round?"
                 header="Initiating round" 
                 severity="alert" 
                 widgetVar="confirmation"
                 >

    <p:growl id="growl2" showDetail="true" life="3000"/>

    <p:commandButton id="confirm" 
                     value="Yes Sure" 
                     update="growl2,mmBody,mm" 
                     oncomplete="confirmation.hide(),mm.update()"
                     actionListener="#{mmBean.checkRenderMM()}"
                     />

    <p:commandButton id="decline"
                     value="Not Yet" 
                     onclick="confirmation.hide()"
                     type="button"
                     /> 

</p:confirmDialog>

<p:mindmap id="mindmap" value="#{mmBean.root}" widgetVar="mm">
  ...
</p:mindmap>    
Get和set是标准的getter和setter

我想知道的是,有没有一种方法可以从豆子内部做到这一点?即:

public Boolean checkRenderMM(){
    if ( this.cUser.getReadytobegin() != 1 ){
        this.setRenderMM( false );
    }
    else{
        this.setRenderMM( true );
    }

    SOME CODE THAT UPDATES THE MINDMAP COMPONENT FROM HERE

    return this.getRenderMM();
}
或者类似的东西


谢谢

我不明白您想要/需要什么:如何在primefaces确认对话框中显示/隐藏思维导图,或者在单击确认选项后更新数据库?据我所知,您已将MM绑定到bean中的属性。具有私有MindmapNode根;当checkRenderMM listener正在处理时,您可以用它做任何您想做的事情。您的问题/要求很难理解。在查看代码时,您的整个问题不是因为在更新中使用了不正确的ID而导致的吗?更新=growl2,mmBody,mm应该是更新=growl2,mmBody,mindmap吗?对不起,我一直在胡闹,先尝试了一些不同的东西,这就是为什么更新的id mm有点错误,我调用了一个不同的表单-我试图通过设置widgetVar=mm并调用mm.update来更新mindmap,或者试图找出正确的语法。在任何情况下,在混乱了一些之后,它现在起作用了——虽然我不得不更新思维导图的形式,而不是直接更新思维导图,我认为这很有意义,但没有像我第一次尝试的那样起作用。我为我不清楚的问题道歉,我会努力的。
public Boolean checkRenderMM(){
    if ( this.cUser.getReadytobegin() != 1 ){
        this.setRenderMM( false );
    }
    else{
        this.setRenderMM( true );
    }

    SOME CODE THAT UPDATES THE MINDMAP COMPONENT FROM HERE

    return this.getRenderMM();
}