我有一个带有两个 boolean 字段的用户对象:
//User Bean
public class Users {
private Boolean showContactData;
private Boolean showContactDataToContacts;
// Getters + Setters
}
我想使用 Apache Wicket 将其显示为 UI 中的 RadioChoice。
HTML 部分的片段:
<input type="radio" wicket:id="community_settings"/>
Wicket 中带有 radio 的 Java 表单
public class UserForm extends Form<Users> {
public UserForm(String id, Users user) {
super(id, new CompoundPropertyModel<Users>(user));
RadioChoice rChoice = new RadioChoice<Long>("community_settings", choices, renderer);
add(rChoice );
}
}
我现在的问题是,我在用户对象中当然没有属性community_settings。 我只是想将这两个 boolean 值映射到 UI 中的单选选项。
我怎样才能在 Wicket 中做到这一点?
谢谢! 塞巴斯蒂安
最佳答案
您需要一个模型来映射数据:
RadioChoice<Long> rChoice = new RadioChoice<Long>("community_settings", new IModel<Long>() {
public Long getObject() {
if (user.getShowContactData() && user.getShowContactDataToContacts()) {
return 1L;
}
// ...
}
public void setObject(Long choice) {
if (choice == 1) {
user.setShowContactData(true);
user.setShowContactDataToContacts(true);
} else if (choice == 2) {
// ...
}
}
public void detach() {
}
}, choices);
顺便说一句,我个人会使用Enum
,因此根本没有特殊的映射。看起来你做的事情有点太“低级”,所以 Wicket 口模型的东西会感觉非常麻烦。如果合适的话,尝试使用对象而不是原始类型。
关于java - 将 IModel 的两个 boolean 字段映射到 Wicket 中的 RadioChoice,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12340546/