Wicket字符串验证器,用于对象映射的表单组件

时间:2013-06-12 10:57:47

标签: wicket wicketstuff

我正在使用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,因为StringValidator的{​​{1}}未定义。所以我使用下面的字段并获取字段的值并将其设置为手动对象。

TextField<Withdrawal>

有没有办法直接在 TextField<String> tf_comments = new TextField<String>("comment"); tf_comments.add( new StringValidator.MaximumLengthValidator(255)); form.add(tf_comments); 添加验证码

谢谢。

1 个答案:

答案 0 :(得分:1)

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

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

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