primefaces(java、jsf)についてもう1つ質問があります。 私はそのようなコードでManagedBeanを持っている:Primefaces:inplaceタグにajaxを使用してdbに保存
@ManagedBean
@SessionScoped
public class AccountManagedBean {
private Long id = (long) 1;
private Account account = new Account();
private AccountJpaController accountController = new AccountJpaController();
public void AccountManagedBean() {
extractAccount();
}
public void saveAccount() {
accountController.update(account);
// extract info for page
extractAccount();
}
public void extractAccount() {
account = accountController.get(id);
}
public Account getAccount() {
return account;
}
public void setAccount(Account account) {
this.account = account;
}
}
とXHTMLファイル - ビューの一部:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui"
xmlns:c="http://java.sun.com/jsp/jstl/core">
<h:body>
<p:panel id="account">
<h:panelGrid columns="2" columnClasses="column" cellpadding="5">
<h:outputText value="Balance: " />
<p:inplace editor="true">
<p:ajax event="save" listener="#{accountManagedBean.saveAccount}" update="account" />
<p:inputText value="#{accountManagedBean.account.balance}" required="true"/>
</p:inplace>
<h:outputText value="Credit limit: " />
<p:inplace editor="true" >
<p:ajax event="save" listener="#{accountManagedBean.saveAccount}" update="account" />
<p:inputText value="#{accountManagedBean.account.creditLimit}" required="true"/>
</p:inplace>
<h:outputText value="Comment: " />
<p:inplace editor="true">
<p:ajax event="save" listener="#{accountManagedBean.saveAccount}" update="account" />
<p:inputText value="#{accountManagedBean.account.comment}"/>
</p:inplace>
</h:panelGrid>
</p:panel>
</h:body>
問題は、編集された情報を保存してあります。 saveAccountメソッドでブレークポイントを設定し、ページ上の値を変更しようとしました。ページ上のフィールド値を変更すると、プログラムはブレークポイントで一時停止し、DBに保存しているオブジェクトを見ることができます - 古い値(dbから抽出されたもの)があります。また、ページ上で古い値もあります(「古い」アカウントが更新されたため)。私はプライムフェイス3.0.RC2を使用します。 Ajax属性の "イベント"に問題がある可能性があります(私は "保存"を使用しますが、Primefacesのユーザーガイドではこのような状況で他のバリエーションは見つかりませんでした)。私の問題を助けてください。
あなたの問題は何ですか? –
アカウントオブジェクト内のフィールド(ページ上)を編集した後に何も変更されなかったため、アカウントフィールドを変更してオブジェクトをDBに保存できません。 – Nazar