2011-12-27 23 views
1

正常工作在我的應用程序中,我使用PrimeFaces的<p:inline><p:dataTable>組件來實現更新功能如下:PrimeFaces:<p:inline>內<p:dataTable>沒有Ajax調用

<p:dataTable var="m" value="#{mrBean.menu}"> 

    <p:column headerText="Name" > 
     <p:inplace editor="true" > 
     <p:ajax event="save" listener="#{mrBean.changeName}" update="button" /> 
     <p:inputText value="#{m.name}" /> 
     </p:inplace> 
    </p:column> 

</p:dataTable> 

<p:commandButton id="button" value="Confirm" actionListener="#{mrBean.confirm}" 
       disabled="#{not mrBean.canConfirm}"/> 

這是我Managedbean:

@ManagedBean(name = "mrBean") 
@ViewScoped 
public class MrBean { 
    private List<Meal> menu; 
    private boolean canConfirm; 

    public void changeName() { 
     this.canConfirm = true; 
    } 

    public void confirm() { 
     System.out.println("Updated database!"); 
    } 
} 

當我完成編輯name並點擊保存,我的吃按鈕沒有啓用。

如果你能告訴我我在這裏做錯了什麼,我將不勝感激。我正在使用PrimeFaces 3.0.RC2。

回答

1

問題是<p:inline>不能用在<p:dataTable>裏面去編輯。我應該使用的是<p:cellEditor>

0

您的bean中必須有布爾值isReadyToEat() {return readyToEat;}方法(和String getSomeText(),void setSomeText(String text))。您還需要放置命令按鈕就位裏面表格標記。

如果按鈕變爲瀏覽器中刷新頁面啓用後,你可能需要

<f:ajax execute="@form" render="button" /> 

就地標籤內。

+0

這不起作用。首先,我不需要提交整個表格。此外,我使用PrimeFaces,我應該只在PrimeFaces的其他標籤中使用''。 – 2011-12-28 08:28:55

1

工作對我蠻好,

我猜你省略從您發佈的目的之一一些代碼,但如果沒有,會後我給你貼了一個旁產生的一個...

private String someText ="xxx"; 


public String getSomeText() { 
    return someText; 
} 

public void setSomeText(String someText) { 
    this.someText = someText; 
} 

public boolean isReadyToEat() { 
    return readyToEat; 
} 

public void setReadyToEat(boolean readyToEat) { 
    this.readyToEat = readyToEat; 
} 

和包裹的XHTML與<h:form>

的代碼和它的工作原理100%

輸出是

準備吃:真

YUMMY!

+0

你說得對,我的例子工作100%。我會在明天更新我的問題。感謝你,我發現了這個問題:P! – 2011-12-27 19:35:10