2016-07-12 8 views
1

要素の編集後にデータリストを更新したいと思います。データを初期化するために@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> 

コードの第2の部分は

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

私はこれをどのように達成することができますか?

+0

が空白の文字列を返す検証しまし提出についてのあなたの最初のフォーム

で および追加id="form"は、ここでの例を見てみましょう。 –

+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(); ""を返します。 } 'それでも –

答えて

0

あなたはボタンの検証アクションをトリガーするとき、あなたが実際にあなたのリストを更新していけません。リストは更新されますが、htmlでもajaxを更新する必要があります。私はあなたがあなたのDataTableにもIDを宣言しなければならないか、それだけでwidgetVarで動作しますが、私はあなたがあまりにもIDが必要だと思うので、あまりにもあなたのdataTableでid="developpeur"を置けば覚えていけないこの

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

のようなSTHを試してみてください。 Ajaxは提出し、非AJAX

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

+0

あなたの助けていただきありがとうございます。私はそのコマンドボタンにupdate = "@ all"を追加しました – omar

関連する問題