Ive得到下面的代碼更新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());
}
}
}
當我進入一個新的名字及按我的提交按鈕,新的值停留在文本字段。對於後來的作品來說,這很好,但只是爲了理解:爲什麼他更新我的文本框,當PropertyModel仍然留給oldUser和client.getSessionUser()我仍然是老用戶。後端沒有更新。
在同一個WebPage上我得到了另一個面板,它給了我真正的用戶信息。
@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")));
}
}
而且這個標籤變成了新的價值,但他仍然得到了oldUser通過client.getSessionUser(),因爲更新方法尚未實現。
希望有人能解釋爲什麼PropertyModels引用newUser而不是oldUser。否則爲什麼是像我建立我的PropertyModel像PropertyMode(oldUser,...
我的愚蠢問題。謝謝你的幫助。我只是與模型一起使用getter方法。現在我認識到模型也可以使用setter方法... – user1090145 2012-01-15 15:01:17
也有ReadOnlyModels :) – rotsch 2012-01-15 16:00:14
什麼是ReadModel?因爲我遇到了衝突,所以在更新後端中的用戶時發生錯誤時,在前端中,它會被propertymodel更新。或者是否有任何回退方法? – user1090145 2012-01-18 10:35:24