编辑后数据列表不刷新
Data list does not refresh after editing
我想在编辑元素后刷新数据列表。我已经使用@Postconstruct 来初始化数据,但是没有用。
以下代码显示数据列表:
<h:form>
<p:dataTable widgetVar="developpeur" value="#{manageUrlSiteTestBean.sitewebs}" var="dev" style="margin-bottom:20px">
<f:facet name="header">
Les tests de la website url </f:facet>
<p:column headerText="titre">
#{dev.title}
</p:column>
<p:column>
<p:commandButton value="edit" update=":form">
<f:setPropertyActionListener target="#{manageUrlSiteTestBean.siteweb}" value="#{dev}"></f:setPropertyActionListener>
<f:setPropertyActionListener target="#{manageUrlSiteTestBean.form}" value="true"></f:setPropertyActionListener>
</p:commandButton>
</p:column>
</p:dataTable>
</h:form>
代码的第二部分是一个表单,用于检索选择进行编辑的数据
<h:panelGrid id="form">
<h:form rendered="#{manageUrlSiteTestBean.form}" >
<p:panel header="Modification">
<h:panelGrid columns="1">
<p:outputLabel value="Name" id="lcin"/>
<p:inputText id="cink" value="#{manageUrlSiteTestBean.siteweb.title}" required="true" >
</p:inputText>
</h:panelGrid>
<p:commandButton value="Validate" action="#{manageUrlSiteTestBean.validate()}" />
</p:panel>
</h:form>
</h:panelGrid>
下面的代码是backing bean
@ManagedBean
@ViewScoped
public class ManageUrlSiteTestBean implements Serializable{
public ManageUrlSiteTestBean(){
}
private static final long serialVersionUID = 1L;
@EJB
ManageUrlSiteTestLocal local;
private SiteWebImpose siteweb = new SiteWebImpose() ;
private List<SiteWeb> sitewebs=new ArrayList<SiteWeb>();
private boolean form;
public ManageUrlSiteTestLocal getLocal() {
return local;
}
public void setLocal(ManageUrlSiteTestLocal local) {
this.local = local;
}
public List<SiteWeb> getSitewebs() {
return sitewebs;
}
public void setSitewebs(List<SiteWeb> siteweb) {
this.sitewebs = siteweb;
}
public SiteWebImpose getSiteweb() {
return siteweb;
}
public void setSiteweb(SiteWebImpose siteweb) {
this.siteweb = siteweb;
}
public boolean isForm() {
System.out.println("nn");
return form;
}
public String validate(){
local.updateUrlSite(siteweb);
form=false;
siteweb=new SiteWebImpose() ;
init();
return null;
}
public void setForm(boolean form) {
this.form = form;
}
@PostConstruct
public void init(){
setSitewebs(local.listerUrlSiteTests());
}
}
我怎样才能做到这一点?
当您触发按钮的验证操作时,您实际上并没有更新您的列表。所以列表将会更新,好的,但是您也需要 ajax 在 html 更新它。试试这个
<p:commandButton value="Validate" action="#{manageUrlSiteTestBean.validate()}" update=":form:developpeur"/>
我不记得你是否还必须为你的数据表声明一个 id,或者它只能与 widgetVar
一起使用,但我认为你也需要一个 id,所以把 id="developpeur"
放在你的数据表中也。
并在您的第一个表格中添加 id="form"
查看此处有关 ajax 提交和非 ajax 提交的示例
http://www.primefaces.org/showcase/ui/button/commandButton.xhtml
我想在编辑元素后刷新数据列表。我已经使用@Postconstruct 来初始化数据,但是没有用。
以下代码显示数据列表:
<h:form>
<p:dataTable widgetVar="developpeur" value="#{manageUrlSiteTestBean.sitewebs}" var="dev" style="margin-bottom:20px">
<f:facet name="header">
Les tests de la website url </f:facet>
<p:column headerText="titre">
#{dev.title}
</p:column>
<p:column>
<p:commandButton value="edit" update=":form">
<f:setPropertyActionListener target="#{manageUrlSiteTestBean.siteweb}" value="#{dev}"></f:setPropertyActionListener>
<f:setPropertyActionListener target="#{manageUrlSiteTestBean.form}" value="true"></f:setPropertyActionListener>
</p:commandButton>
</p:column>
</p:dataTable>
</h:form>
代码的第二部分是一个表单,用于检索选择进行编辑的数据
<h:panelGrid id="form">
<h:form rendered="#{manageUrlSiteTestBean.form}" >
<p:panel header="Modification">
<h:panelGrid columns="1">
<p:outputLabel value="Name" id="lcin"/>
<p:inputText id="cink" value="#{manageUrlSiteTestBean.siteweb.title}" required="true" >
</p:inputText>
</h:panelGrid>
<p:commandButton value="Validate" action="#{manageUrlSiteTestBean.validate()}" />
</p:panel>
</h:form>
</h:panelGrid>
下面的代码是backing bean
@ManagedBean
@ViewScoped
public class ManageUrlSiteTestBean implements Serializable{
public ManageUrlSiteTestBean(){
}
private static final long serialVersionUID = 1L;
@EJB
ManageUrlSiteTestLocal local;
private SiteWebImpose siteweb = new SiteWebImpose() ;
private List<SiteWeb> sitewebs=new ArrayList<SiteWeb>();
private boolean form;
public ManageUrlSiteTestLocal getLocal() {
return local;
}
public void setLocal(ManageUrlSiteTestLocal local) {
this.local = local;
}
public List<SiteWeb> getSitewebs() {
return sitewebs;
}
public void setSitewebs(List<SiteWeb> siteweb) {
this.sitewebs = siteweb;
}
public SiteWebImpose getSiteweb() {
return siteweb;
}
public void setSiteweb(SiteWebImpose siteweb) {
this.siteweb = siteweb;
}
public boolean isForm() {
System.out.println("nn");
return form;
}
public String validate(){
local.updateUrlSite(siteweb);
form=false;
siteweb=new SiteWebImpose() ;
init();
return null;
}
public void setForm(boolean form) {
this.form = form;
}
@PostConstruct
public void init(){
setSitewebs(local.listerUrlSiteTests());
}
}
我怎样才能做到这一点?
当您触发按钮的验证操作时,您实际上并没有更新您的列表。所以列表将会更新,好的,但是您也需要 ajax 在 html 更新它。试试这个
<p:commandButton value="Validate" action="#{manageUrlSiteTestBean.validate()}" update=":form:developpeur"/>
我不记得你是否还必须为你的数据表声明一个 id,或者它只能与 widgetVar
一起使用,但我认为你也需要一个 id,所以把 id="developpeur"
放在你的数据表中也。
并在您的第一个表格中添加 id="form"
查看此处有关 ajax 提交和非 ajax 提交的示例
http://www.primefaces.org/showcase/ui/button/commandButton.xhtml