Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.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
Java 在Primefaces5+中呈现不工作;JSF2_Java_Jsf_Primefaces - Fatal编程技术网

Java 在Primefaces5+中呈现不工作;JSF2

Java 在Primefaces5+中呈现不工作;JSF2,java,jsf,primefaces,Java,Jsf,Primefaces,这里是我的XHTML代码 <p:selectOneRadio id="selectone" value="#{tweetDistributionManagedBean.tweetType}"> <f:selectItem itemLabel="Group Tweets" itemValue="GT" /> <f:selectItem itemLab

这里是我的XHTML代码

<p:selectOneRadio id="selectone"
                    value="#{tweetDistributionManagedBean.tweetType}">
                    <f:selectItem itemLabel="Group Tweets" itemValue="GT" />
                    <f:selectItem itemLabel="Event Tweets" itemValue="ET" />
                    <f:selectItem itemLabel="Suprachar Tweets" itemValue="ST" />
                    <p:ajax event="click"
                        listener="#{tweetDistributionManagedBean.renderUploadPanel}"
                        update="gtid" process="@form" />
                </p:selectOneRadio>
我想在单击复选框时呈现此面板

<p:panel id="gtid"
                rendered="#{tweetDistributionManagedBean.visibleGTFlag}"
                toggleable="true">
                <p:fileUpload
                    fileUploadListener="#{tweetDistributionManagedBean.handleFileUpload}"
                    mode="advanced" multiple="true" update="messages" auto="true"
                    sizeLimit="1048576" allowTypes="/(\.|\/)(doc|docx|xls|xlsx|pdf)$/" />
            </p:panel>


但是,当我刷新此页面时,此面板会显示我做错了什么?

问题是,当组件已
rendered=“false”
时,它不会添加到视图树组件中,因此当前视图中的任何组件都无法引用或更新它。这解释了当您尝试通过ajax请求更新组件时,此更新失败的原因,因为您仍然在同一视图中,而当您在页面上触发完整请求时,您可以看到该组件,因为它是一个新视图

这些问题的解决方案是将未呈现的组件包装在UIContainer中,并更新包装器组件。您可以使用将呈现为HTML div的



您的bean的范围是什么?如果是
@RequestScoped
@viewscope
visibleGTFlag
字段的初始值是多少?我使用的是
@SessionScoped
当你说你刷新页面时,你实际上刷新了整个页面,或者你指的是ajax更新?是的,当我点击复选框时,我说的应该是工作bot,它不工作,当我手动刷新时,它工作整页为布尔值为true显示面板这是一个问题当我单击复选框时应该显示面板哦是的,谢谢我错过了那一点如果在页面上呈现为false加载它没有添加到dom树中它将不会呈现任何方式…感谢提醒我..只有一个问题如何获取像单击哪个复选框这样的值,以便我可以编写一些业务登录?我认为它可以工作
public void renderUploadPanel(SelectEvent事件){String selecteValues=(String)event.getObject();}
@user3696143检查服务器端绑定到复选框的字段值。我想你应该发布另一个问题,更好地解释你想要/需要什么。
<p:panel id="gtid"
                rendered="#{tweetDistributionManagedBean.visibleGTFlag}"
                toggleable="true">
                <p:fileUpload
                    fileUploadListener="#{tweetDistributionManagedBean.handleFileUpload}"
                    mode="advanced" multiple="true" update="messages" auto="true"
                    sizeLimit="1048576" allowTypes="/(\.|\/)(doc|docx|xls|xlsx|pdf)$/" />
            </p:panel>