java - 将 IModel 的两个 boolean 字段映射到 Wicket 中的 RadioChoice

标签 java wicket

我有一个带有两个 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/

相关文章:

java - 访问 Web 应用程序的静态资源

java - 针对 XSD 验证 XML 时忽略元素顺序

java - 如何使用runOnUithread运行?

java - 我应该将文件放在哪里,以便在运行 jar 时能够访问它们?

java - Eclipse - 错误 : <wicket:panel> is not recognized

html - 如何使用 CSS 对齐列以便它们共享整个面板

ajax - 如果字段未通过验证条件,如何强制触发 Wicket "onchange"AJAX 事件

java - Kinect API 仅用 Java 编写,没有 native 功能?

java - 多行正则表达式

css - Wicket - 删除陈旧的标题贡献/AJAX 面板替换