3

我正在使用 Form 组件来编辑 Object 中的值。我已经使用 LoadableDetachableModel 将对象映射到表单,以便对象中的值显示在表单上并自动应用更新。

final Form<Withdrawal> form = new Form<Withdrawal>("form",
                new CompoundPropertyModel<Withdrawal>(ldm)) {
.... }

但是,我在将验证器添加到表单组件(例如 StringValidator)到文本字段时遇到了问题。我有一个“评论”字段(提款对象中的字段之一)。

理想情况下,我想将其添加为:

TextField<Withdrawal> tf_comments = new TextField<Withdrawal>("comment");
tf_comments.add( new StringValidator.MaximumLengthValidator(255));
form.add( tf_comments);

但是由于我无法将 StringValidators 添加到它,因为StringValidatorforTextField<Withdrawal>没有定义。所以我正在使用以下内容并获取字段的值并将其手动设置为对象。

    TextField<String> tf_comments = new TextField<String>("comment");
    tf_comments.add( new StringValidator.MaximumLengthValidator(255));
    form.add(tf_comments);

有没有办法直接添加验证器TextField<Withdrawal>

谢谢你。

4

1 回答 1

1

首先,你对 withist 的理解是TextField<Withdrawal>错误CompoundPropertyModel的:CompoundPropertyModel 负责将名称 via 指定的属性绑定PropertyModel到 TextField。因此,您不需要StringValidatorTextField 的通用对象。

在检票口 6.7 中: TextField<Withdrawal> tf_comments = new TextField<Withdrawal>("comment"); tf_comments.add(StringValidator.maximumLength(255));

对于 Wicket 1.5,您的代码应该可以工作,至少我没有遇到任何语法错误。您应该在 Withdrawal 类中为“comment”设置 getter 和 setter。

于 2013-06-12T12:48:20.140 回答