アイブ氏はUser.classを更新するコードを以下ました:ウィケット:PropertyModel更新
@SuppressWarnings("serial")
public class UpdateProfilePanel extends Panel{
protected ServiceClientTemp client = ((WicketApplication) (WicketApplication.get())).getClient();
protected User oldUser;
protected User newUser;
public UpdateProfilePanel(String id) {
super(id);
Form updateProfileForm = new UpdateProfileForm("updateProfileForm");
add(updateProfileForm);
}
class UpdateProfileForm extends Form {
private FormComponent formForename;
private FormComponent formSurname;
private FormComponent formEmail;
public UpdateProfileForm(String id) {
super(id);
oldUser = client.getSessionUser();
formForename = new TextField("forename1", new PropertyModel(oldUser, "forename"));
formSurname = new TextField("surname1", new PropertyModel(oldUser, "surname"));
formEmail = new TextField("email1", new PropertyModel(oldUser, "email"));
add(formForename);
add(formSurname);
add(formEmail);
}
public void onSubmit() {
newUser = new User();
newUser.setForename(formForename.getInput());
newUser.setSurname(formSurname.getInput());
newUser.setEmail(formEmail.getInput());
}
}
}
私は新しいforenameを入力して、私は送信ボタンを押すと、新しい値がテキストフィールドに残ります。後で、これほどうまくいくが、理解のためだけに:なぜ彼は私のTextfieldを更新するのですか?PropertyModelがoldUserとclient.getSessionUser()に変わったときに私はまだoldUserを取得します。バックエンドには更新がありませんでした。
同じWebページ上で、Iveには別のPanelがあります。このパネルは私にユーザーの情報を与えてくれます。更新方法はまだ実装されていないため、彼は、まだ取得client.getSessionUser()によってoldUserが
@SuppressWarnings("serial")
public class UserInfoPanel extends Panel {
protected ServiceClientTemp client = ((WicketApplication) (WicketApplication.get())).getClient();
protected User infoUser;
@SuppressWarnings("rawtypes")
UserInfoPanel(String id) {
super(id);
infoUser = client.getSessionUser();
add(new Label("username", new PropertyModel(infoUser, "username")));
add(new Label("surname", new PropertyModel(infoUser, "surname")));
add(new Label("forename", new PropertyModel(infoUser, "forename")));
add(new Label("email", new PropertyModel(infoUser, "email")));
add(new Label("state", new PropertyModel(infoUser, "state")));
}
}
はまた、このラベルは、新しい値に変わります。
誰かが、なぜ、PropertyModelsがoldUserの代わりにnewUserを参照しているのか、私が説明できることを願ってください。なぜ他、私はどのようなモデルが仕事だPropertyMode(oldUser、...
私の愚かな質問。ご協力いただきありがとうございます。私はちょうどゲッターメソッドと関連してモデルを使って作業しました。今私はモデルがセッターメソッドでも動作することを認識しました... – user1090145
ReadOnlyModelsもあります:) – rotsch
ReadModelとは何ですか?私は競合を起こすので、バックエンドで自分のユーザーを更新する際にエラーが発生するが、フロントエンドでは、プロパティーモデルによって更新されます。または、フォールバック方式がありますか? – user1090145