gpt4 book ai didi

java - Wicket DropDownChoice 所选值

转载 作者:行者123 更新时间:2023-11-30 05:54:43 25 4
gpt4 key购买 nike

我试图在 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;
}

最佳答案

问题出在 button.setDefaultFormProcessing(false) 中。这告诉 Wicket 不要使用提交的值并且不要更新 FormComponents 的模型,即 DropDownChoice 不会有模型对象,因此不会设置selected

.setDefaultFormProcessing(false) 通常用于 Cancel 按钮,您只想离开表单。

关于java - Wicket DropDownChoice 所选值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53379070/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com