Ajax使用它更新字段';s ID不';无法在基本面上使用渲染属性

Ajax使用它更新字段';s ID不';无法在基本面上使用渲染属性,ajax,primefaces,Ajax,Primefaces,当在selectOneMenu上触发update时,我对ajax和rendered属性有一个小问题 以下是选择菜单的代码: <div class="row"> <div class="span10 margin-bottom-10"> <div class="control-group"> <label class="hcg-contro

当在
selectOneMenu
上触发
update
时,我对
ajax
rendered
属性有一个小问题

以下是
选择菜单的代码:

<div class="row">
    <div class="span10 margin-bottom-10">
        <div class="control-group">
            <label class="hcg-control-label span5">Τύπος Παραγώμενου Εγγράφου</label>
                <div class="controls span7">
                   <p:selectOneMenu id="ProducedDocumentType" value="#{certificateTypeRegisterView.cAType.producedDocument}" style="width:100%">
                     <p:ajax event="change" update=":cATypeForm:UploadFileWidget" immediate="true" process="@this"/>
                     <f:selectItems value="#{enumsBean.producedDocumentTypes}" var="myVar" itemValue="#{myVar}" itemLabel="#{myVar.label}" />
                   </p:selectOneMenu>
                </div>
        </div>
    </div>
</div>
这将产生以下结果:

要求仅当用户选择下拉列表前两个值中的一个时,才呈现整个
panelGroup
。我只能在
更新
属性时才能使其工作 如下所示:
update=“@form”
,但我不想使用它,因为发生这种情况时,会刷新同一表单的其他字段的详细信息,用户必须从头重写。我只想更新panelGroup,所以我尝试使用它的id(如上面的代码所示),但什么也没发生


如果你能告诉我我做错了什么,我将不胜感激。提前感谢。

通过执行以下操作解决了此问题。我将更新更改为:


然后我用一个
包装了
的整个
,最后的代码如下:


Πρότυπο Εγγράφου

您不必更改为
f:ajax
您的
p:ajax
很好。正确的解决方案是包装外部组件并进行更新,以便重新使用其中的渲染标志。JSF不会更新呈现为“false”的字段,因为它甚至不在JSF树中。通过将其包装在可见的外部组件中,
update=”“
现在可以工作了。所以我会把你的
p:ajax
放回去。。这是人们在使用JSF和
rendered
字段时经常犯的错误。
<h:panelGroup id="UploadFileWidget" rendered="#{certificateTypeRegisterView.cAType.producedDocument ne 'withoutDocument'}" >
    <div class="row">
                <div class="span10 margin-bottom-10">
                    <div class="control-group">
                        <label class="hcg-control-label span5">Πρότυπο Εγγράφου</label>
                        <div class="controls span7">
                            <div class="hcg-input-group">
                                <p:inputText id="TemplateFile" styleClass="hcg-full-width" required="true" value="#{certificateTypeRegisterView.cAType.template.fileName}" readonly="true" requiredMessage="Δεν έχετε επιλέξει πρότυπο εγγράφου!"/>
                                <span class="hcg-input-group-btn">
                                    <p:commandButton id="TemplateFileDownload" styleClass="btn btn-default" icon="fa fa-download" actionListener="#{certificateTypeRegisterView.downloadTemplateFile}" disabled="#{certificateTypeRegisterView.cAType.template.fileName == null}" />
                                    <p:commandButton styleClass="btn btn-default" id="TemplateFileDelete" icon="fa fa-times" actionListener="#{certificateTypeRegisterView.deleteTemplateFile}" disabled="#{certificateTypeRegisterView.cAType.template.fileName == null}" />
                                </span>
                            </div> 

                             <p:fileUpload id="uploadFile" value="#{certificateTypeRegisterView.uploadedTemplateFile}" fileUploadListener="#{certificateTypeRegisterView.handleTemplateFileUpload}"
                             label="Επιλέξτε" uploadLabel="Ανέβασμα" cancelLabel="Ακύρωση" update=":cATypeForm:TemplateFile,:cATypeForm:TemplateFileDownload,:cATypeForm:TemplateFileDelete" styleClass="hcg-upload" />                         
                        </div>
                    </div>
                </div>
    </div>
</h:panelGroup>