2011-12-27 11 views
1

に正しく機能しない、私は次のように更新機能を実装するためにPrimeFacesの<p:inline><p:dataTable>コンポーネントの内部を使用します。PrimeFaces:<p:dataTable>内部<p:inline>私のアプリケーションでは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の他のタグの真ん中で ''のみを使うべきです。 –

1

は、私はあなたが目的に掲示1からいくつかのコードを省略思いますが、

、私のためにうまく機能するかどうかではない、私はあなたが投稿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; 
} 

<h:form>

とXHTMLのコードを包み、それが100%

出力

で動作し

盛り付け:真

YUMMY!

+0

私の例が100%動作することは間違いありません。私は明日より適切なコードで質問を更新します。あなたのおかげで、私は問題を見つけました:P! –

関連する問題