2016-07-12 5 views
1

Я хотел бы обновить datalist после редактирования элемента. Я использовал @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> 

И следующий код является поддержка боб

@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()); 
    } 
} 

Как я могу это достичь?

+0

ли проверки возвращать пустую строку. –

+0

Что мне делать, пожалуйста? – omar

+0

Если вы можете распечатать список и посмотреть его обновление, измените 'public String validate() { local.updateUrlSite (siteweb); form = false; siteweb = new SiteWebImpose(); init(); return null; } 'этому' public String validate() { local.updateUrlSite (siteweb); form = false; siteweb = new SiteWebImpose(); init(); return ""; } ' –

ответ

0

вы фактически не обновляете свой список при запуске действия проверки вашей кнопки. поэтому список будет обновлен, хорошо, но вам нужно обновить его в html. попробовать что-н, как этот

<p:commandButton value="Validate" action="#{manageUrlSiteTestBean.validate()}" update=":form:developpeur"/> 

я не помню, если вы должны объявить также идентификатор для вашего DataTable или он будет работать только с widgetVar, но я думаю, что вам нужен идентификатор тоже, так что положить id="developpeur" в вашем DataTable тоже. и добавить id="form" в вашей первой форме

взглянуть на примеры здесь о Ajax представить и не Аякса представить

http://www.primefaces.org/showcase/ui/button/commandButton.xhtml

+0

Спасибо за вашу помощь. Я добавил update = "@ all" в эту командуButton – omar