Jsf 数据列表在编辑后不刷新
我想在编辑元素后刷新数据列表。我使用@Postconstruct来初始化数据,但没有成功 以下代码显示数据列表:Jsf 数据列表在编辑后不刷新,jsf,master-detail,ajax-update,Jsf,Master Detail,Ajax Update,我想在编辑元素后刷新数据列表。我使用@Postconstruct来初始化数据,但没有成功 以下代码显示数据列表: <h:form> <p:dataTable widgetVar="developpeur" value="#{manageUrlSiteTestBean.sitewebs}" var="dev" style="margin-bottom:20px"> <f:facet name="header"> Les tests de la web
<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>
Les tests de la网站url
#{dev.title}
代码的第二部分是一个表单,用于检索选择用于编辑的数据
<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>
下面的代码是支持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());
}
}
@ManagedBean
@视域
公共类ManagerUrlSiteTestBean实现可序列化{
公共管理器URLSitestBean(){
}
私有静态最终长serialVersionUID=1L;
@EJB
ManagerUrlSiteTestLocal;
private SiteWebPressure siteweb=新建SiteWebPressure();
private List sitewebs=new ArrayList();
私有布尔形式;
公共管理器UrlSiteTestLocal getLocal(){
返回本地;
}
public void setLocal(ManageUrlSiteTestLocal){
this.local=本地;
}
公共列表getSitewebs(){
返回网站;
}
公共网站(列表网站){
this.sitewebs=siteweb;
}
公共站点Web应用getSiteweb(){
返回网站;
}
公共无效设置网站(站点网站){
this.siteweb=siteweb;
}
公共布尔isForm(){
系统输出打印项次(“nn”);
申报表;
}
公共字符串验证(){
local.updateUrlSite(siteweb);
形式=假;
siteweb=新的SiteWebPressure();
init();
返回null;
}
公共void集合形式(布尔形式){
this.form=形式;
}
@施工后
公共void init(){
setSitewebs(local.listrurSiteTests());
}
}
我如何才能做到这一点?当您触发按钮的验证操作时,实际上不会更新列表。因此,列表将被更新,好的,但是您也需要在html中对其进行ajax更新。试试这样的东西
<p:commandButton value="Validate" action="#{manageUrlSiteTestBean.validate()}" update=":form:developpeur"/>
我不记得您是否还需要为datatable声明一个id,或者它将只与widgetVar
一起工作,但我认为您也需要一个id,所以也将id=“developpeur”
放在datatable上。
并在第一张表单中添加id=“form”
看看这里关于ajax提交和非ajax提交的示例
让validate返回一个空字符串。我该怎么办?如果您可以打印列表并看到它正在更新,请更改
公共字符串validate(){local.updateUrlSite(siteweb);form=false;siteweb=new SiteWebImposure();init();return null;}
此公共字符串验证(){local.updateUrlSite(siteweb);form=false;siteweb=new sitewebpressure();init();return”“;}
仍然存在相同的问题您可以在托管bean中System.out.println
看到列表正在更新吗?感谢您的帮助,我向该命令按钮添加了update=“@all”