Wicket DropDownChoice 选定值
Wicket DropDownChoice selected value
我试图在 DropDownChoice 上获取所选选项的 ID,但出现错误。
我知道当我选择一个值时,我只是更新模型而不是对象(反射)。
我希望通过 getModelObject() 获得对象 "User" 的所有值,但我得到的只是一个 NullPointerException..
我已经根据教程和 Wicket 8 文档尝试了很多东西,但似乎没有任何效果..
我的代码是这样的:
// POJO
class User {
private Integer id;
private String name;
[...]
}
// Main.class
private User selected;
ChoiceRenderer<User> choiceRenderer = new ChoiceRenderer<User>("id", "name");
List<User> list = getUsers();
final DropDownChoice<User> dropdown1 = new DropDownChoice<User>("dropdown",
new PropertyModel<User>(this, "selected"), list, choiceRenderer);
Button btn = new Button("btn") {
private static final long serialVersionUID = 1L;
@Override
public void onSubmit() {
RecrRemoteOperations recr = new RecrRemoteOperations();
try {
// NullPointerException!
// Integer id = dropdown.getModel().getObject().getId();
// id: the id of the selected "User" value on dropdown
recr.updateCommand(id);
} catch (Throwable e) {
e.printStackTrace();
}
}
}.setDefaultFormProcessing(false);
private static List<User> getUsers() {
List<User> allUsers = new ArrayList<User>();
[...]
return list;
}
我不确定,但我的问题与此非常相似question
我被告知我不需要使用 Ajax 但我会尝试看看它是否有效
问题出在button.setDefaultFormProcessing(false)
。这告诉 Wicket 不要使用提交的值并且不要更新 FormComponents 的模型,即 DropDownChoice 不会有模型对象,因此不会设置 selected
.
.setDefaultFormProcessing(false)
通常用于 Cancel
按钮,在这里您只想离开表单。
我试图在 DropDownChoice 上获取所选选项的 ID,但出现错误。 我知道当我选择一个值时,我只是更新模型而不是对象(反射)。 我希望通过 getModelObject() 获得对象 "User" 的所有值,但我得到的只是一个 NullPointerException.. 我已经根据教程和 Wicket 8 文档尝试了很多东西,但似乎没有任何效果..
我的代码是这样的:
// POJO
class User {
private Integer id;
private String name;
[...]
}
// Main.class
private User selected;
ChoiceRenderer<User> choiceRenderer = new ChoiceRenderer<User>("id", "name");
List<User> list = getUsers();
final DropDownChoice<User> dropdown1 = new DropDownChoice<User>("dropdown",
new PropertyModel<User>(this, "selected"), list, choiceRenderer);
Button btn = new Button("btn") {
private static final long serialVersionUID = 1L;
@Override
public void onSubmit() {
RecrRemoteOperations recr = new RecrRemoteOperations();
try {
// NullPointerException!
// Integer id = dropdown.getModel().getObject().getId();
// id: the id of the selected "User" value on dropdown
recr.updateCommand(id);
} catch (Throwable e) {
e.printStackTrace();
}
}
}.setDefaultFormProcessing(false);
private static List<User> getUsers() {
List<User> allUsers = new ArrayList<User>();
[...]
return list;
}
我不确定,但我的问题与此非常相似question 我被告知我不需要使用 Ajax 但我会尝试看看它是否有效
问题出在button.setDefaultFormProcessing(false)
。这告诉 Wicket 不要使用提交的值并且不要更新 FormComponents 的模型,即 DropDownChoice 不会有模型对象,因此不会设置 selected
.
.setDefaultFormProcessing(false)
通常用于 Cancel
按钮,在这里您只想离开表单。