Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.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和viewscope bean)_Ajax_Jsf_Commandbutton_View Scope - Fatal编程技术网

未呈现嵌套面板(ajax和viewscope bean)

未呈现嵌套面板(ajax和viewscope bean),ajax,jsf,commandbutton,view-scope,Ajax,Jsf,Commandbutton,View Scope,使用JSF2.2。 我有两个panelGrid在oneselctmenu选择的基础上呈现。 在面板中,我想放置一些表单,这些表单应该使用他自己的命令按钮来执行。 问题是当面板被渲染时,里面的commandbutton不会执行任何操作。 我知道原因是由于将渲染属性赋值为false, 如本文所述: [ : 在表单提交请求的应用请求值阶段,组件和所有父组件的呈现属性不应计算为false。 在“应用请求值阶段”之前,我试图绕过在desidered组件中添加一个参数以评估为true的问题,但这不起作用。有

使用JSF2.2。 我有两个panelGrid在oneselctmenu选择的基础上呈现。 在面板中,我想放置一些表单,这些表单应该使用他自己的命令按钮来执行。 问题是当面板被渲染时,里面的commandbutton不会执行任何操作。 我知道原因是由于将渲染属性赋值为false, 如本文所述:
[ : 在表单提交请求的应用请求值阶段,组件和所有父组件的呈现属性不应计算为false。
在“应用请求值阶段”之前,我试图绕过在desidered组件中添加一个参数以评估为true的问题,但这不起作用。有人能帮我理解如何实现我的目标吗? bean是ViewScope。 我尝试了各种配置

     <h:form id="azione0">
    <h:selectOneMenu id="smenu0" value="#{bean.azione}">
        <f:selectItems value="#{bean.azioni}" />
        <f:ajax render=":panels  " />
    </h:selectOneMenu>
</h:form>
 <!--This panel is corrected rendered, but the form dosen't work -->
    <h:panelGroup id="panels"   >
        <h:form rendered="#{bean.azione eq 'A'}" >
        <!-- If I execute this command(AJAX) then  THE BEAN IS RECREATED -->
            <h:commandButton value="Add New user- aajax"
                action="#{bean.addnewUser}">
                <f:ajax execute="@this" render="newuser"  />
            </h:commandButton>
            <h:panelGroup id="newuser" rendered="#{bean.newuserinput}">
            Myname
            <h:inputText id="myname" value="#{bean.myname}" />
            <h:commandButton action="#{bean.saveNewUser()}" value="save" >
            <f:ajax execute="@form" render=":panels"/>
            </h:commandButton>
            </h:panelGroup>
            </h:form>       
</h:panelGroup>

我的名字
编辑:
经过多次测试后,我修改了代码,现在它被合成以隔离问题。

我已经解决了反向嵌套组件的问题: 如果我使用rendered=false的表单呈现一个panelGroup,那么当我提交一个ajax按钮时,bean被重建; 如果使用已渲染为false的panelGroup渲染窗体,则该窗体工作正常。 组件渲染时:面板:

<!--This dosen't work -->       
<h:panelGroup id="panels"   >
            <h:form rendered="#{bean.azione eq 'A'}" >

    <!--This works -->
 <h:form id="panels">
    <h:panelGroup  rendered="#{bean.azione eq 'A'}">


根据您的标题,您有嵌套的表单,但在您的代码中,我看不到任何表单…因此请创建一个用于演示问题的表单。您在下面的代码中的解释与表单无关。抱歉:嵌套面板。第一个表单有一个SELCTEONEMU。在选择的基础上呈现panelUser或panleRoles。在panelUser中表单newusercheck。第一个按钮被正确呈现。当它被点击时,面板数据应该被呈现。但是什么都没有发生。一旦我发布了一个可验证的示例,嵌套表单在大多数情况下都是一个好方法…在JSF中遇到大麻烦。在你的情况下,我会利用PrimeFaces p:outputPanel并通过id或样式选择来更新它。如果我t可以满足您的要求,我可以为您提供一个详细的示例作为答案建议。是的,这可能很有用。我会尝试使用rich Faces,但如果您能给我一个好的示例,我可以尝试使用primefaces。显然bean实际上没有查看范围。在构造函数/后构造函数中放置一个断点以确认。这与的第9点匹配,但tbean操作应该在第二次点击时被调用。@BalusC实际上,在第二次点击时,bean不再被重建,所有的阶段都被执行,但是bean操作(我试图插入其他要执行的输入)没有被执行。。。