JSF2和Primefaces属性Ajax=false
我有一个表单,它有一个commandlink,可以打开一个模式对话框,该对话框保存了一个inputtext和一个按钮,当我在inputtext中输入一个值时,该值必须复制到第一个表单中的另一个inputtext,但属性更新不会更新第一个表单中的inputtext,我必须将属性ajax=“false”在对话框的按钮save中,重新加载页面,因此对话框的inputtext中的值被复制到第一个表单的inputtext。我想知道是否有其他方法可以在不使用属性ajax=“false”的情况下更新此值,并且不重新加载页面 创建_store.xhtmlJSF2和Primefaces属性Ajax=false,primefaces,jsf-2.2,Primefaces,Jsf 2.2,我有一个表单,它有一个commandlink,可以打开一个模式对话框,该对话框保存了一个inputtext和一个按钮,当我在inputtext中输入一个值时,该值必须复制到第一个表单中的另一个inputtext,但属性更新不会更新第一个表单中的inputtext,我必须将属性ajax=“false”在对话框的按钮save中,重新加载页面,因此对话框的inputtext中的值被复制到第一个表单的inputtext。我想知道是否有其他方法可以在不使用属性ajax=“false”的情况下更新此值,并且
<ui:composition
xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui" >
<h:panelGrid columns="3" width="100%" border="0" columnClasses="colC1,colC2">
<h:outputText value="Code: " style="margin-right:20px;"/>
<p:inputText id="idCodProvider" value="#{storeBean.au.code}" size="84"/>
<h:outputText value="Name: " style="margin-right:20px;"/>
<p:inputText id="idName" value="#{storeBean.au.name}" size="84"/>
<p:commandLink id="idAdressLink" style="margin-right:20px;" actionListener="#{storeBean.selectAdress}"
update=":idFormAdress:idPgADressStore" >
<h:outputText value="Adress:" />
</p:commandLink>
<p:inputText id="idAdressStore" label="Adress" value="#{storeBean.au.adressStore}" size="84"/>
<h:outputText value="   " />
</h:panelGrid>
dialog_address.xhtml
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<h:panelGrid id="idPgAdressStore" columns="2" columnClasses="col1,col2">
<h:outputLabel for="idAdress" value="Adress: " />
<p:inputText id="idAdress" label="Adress" size="40" value="#{adressBean.au.strAdress}"/>
<f:facet name="footer">
<h:panelGrid width="100%" columns="2" style="text-align:center">
<p:commandButton id="idBtSaveDir" value="Save" actionListener="#{storeBean.saveAdress}"
update=":idFormAdress,:idFormStore" onComplete="PF('dlgDirStore').hide()"/>
<p:commandButton id="idBtCancelDir" value="Cancel" type="button" onclick="PF('dlgDirStore').hide()"/>
</h:panelGrid>
</f:facet>
</h:panelGrid>
你想要实现的目标是完全合法的。我假设:1。storeBean.SaveAddress将值复制到storeBean.au.AddressStore字段;2.idAdressStore和idAdress输入在两个单独的h:form-s中;3.代码中没有嵌套的h:forms;4. :idFormStore正确地指向包含您要更新的字段的表单-是吗?您可以,有两个表单,idFormStore使用idAdressStore在create_store.xhtml中工作,idFormStore使用idAdressStore在对话框_address.xhtml中工作,idAdressI'd try update=“:{p:component('fieldId')}”以确保识别正确的字段没有问题。我还将onComplete更改为onComplete(它是这样工作的吗?)。我找不到任何可能真正导致此问题的东西-但showcase中有一个此类更新的示例:-也许它可以帮助您自己发现差异。您再次还行,我在这里写得很差,但在我的代码中,它是不完整的。我使用的模板左侧有一棵树,右侧有一个输出面板,outputpanel包含create_store.xhtml,因此当我第一次使用create_store.xhtml时,我可以在树的各个分支之间进行更改,但我更改到了另一个分支,并返回到create_store.xhtml的分支。该对话框在使用ajax更新时出现问题,我必须重新加载页面或放置ajax=“false”因为这很有效,但我想知道另一种不用ajax=“false”进行更新的方法,我的提示是,存在错误的
update
属性值。尝试udpate=“@all”。如果有效,请尝试跟踪组件的正确ID。