我正在使用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);
添加验证码?
谢谢。
答案 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。