对象映射表单组件的Wicket字符串验证程序

对象映射表单组件的Wicket字符串验证程序,wicket,wicketstuff,Wicket,Wicketstuff,我正在使用表单组件编辑对象中的值。我已经使用LoadableDetachableModel将一个对象映射到表单,以便在表单上显示对象中的值,并自动应用更新 final Form<Withdrawal> form = new Form<Withdrawal>("form", new CompoundPropertyModel<Withdrawal>(ldm)) { .... } 是否有办法将验证程序直接添加到文本字段 谢谢。首先

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

final Form<Withdrawal> form = new Form<Withdrawal>("form",
                new CompoundPropertyModel<Withdrawal>(ldm)) {
.... }
是否有办法将验证程序直接添加到
文本字段


谢谢。

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

在Wicket 6.7中:

TextField tf_comments=新的TextField(“comment”);
tf_comments.add(StringValidator.maximumLength(255));

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

我使用的是Wicket 1.4。我收到以下错误:找不到添加(StringValidator)方法FormComponent的合适方法。添加(IValidator)不适用(实际参数StringValidator无法通过方法调用转换转换为IValidator)说不出你的设置有什么问题:我刚刚用wicket 1.5在jetty上快速测试了这个示例,它运行正常。你能粘贴更多的代码(e.x.撤销类)pastebin吗?你在标签中指定了Wicket 1.5,所以我测试了这个版本。对于Wicket 1.4,只需使用textf_comments=newtextfield(“comment”)。这应该能奏效。顺便问一下:您使用过时的wicket版本有什么特别的原因吗?
TextField<Withdrawal> tf_comments = new TextField<Withdrawal>("comment");
tf_comments.add( new StringValidator.MaximumLengthValidator(255));
form.add( tf_comments);
    TextField<String> tf_comments = new TextField<String>("comment");
    tf_comments.add( new StringValidator.MaximumLengthValidator(255));
    form.add(tf_comments);