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>