我尝试在beaneditform上为密码字段制作正则表达式,但密码字段不识别正则表达式???任何建议请???? :)
addUser.tml
<t:beaneditform t:id="newUser" exclude="id" reorder="userName,password,fullName,Gender,email,role">
..........................
<t:parameter t:name="password">
<t:label t:for="password" />
<t:passwordfield t:id="password" t:value="newUser.password" t:validate="required,regexp"/>
</t:parameter>
.......................
</t:beaneditform>
addUser.properties
password-regexp=^[a-z0-9_]{3,15}$
password-regexp-message=password only alowed letters [a-z] numbers[0-9] and underscore
addUser.java:
@Persist
@Property
private User newUser;
答案 0 :(得分:1)
正如弗拉德所说,我也认为在tapestry中没有对标记进行集成的正则表达式检查,最后在这个link中看到支持的验证器(但也许在版本中你正在使用,而不是真的肯定的。)
也许您可以尝试以某种方式使用onValidate生命周期事件处理程序,以针对错误的输入验证该字段。
@Component
private Form yourForm;
@Property
private String inputFromField;
public void onValidate() {
Pattern p = Pattern.compile("^[a-zA-Z0-9]+$");//Alpha numeric regexp
Matcher m = p.matcher(inputFromField);
if(m.find()) {
yourForm.recordError(inputFromField,messages.get("This field can only contain letters and numbers"));
}
}
无论如何,我确定不止一种方法可以做到这一点,但这只是一个例子。 我没有编译并尝试它,但我很确定这是可以做到的方法之一。如果您需要更多帮助,请查看此页面:http://www.packtpub.com/article/user-input-validation-in-tapestry-5
请务必将代码添加到表单中。
<强>更新强>
当我说不可能直接在标记中使用正则表达式时,我错了。 看了Heanning的链接后,我看到有可能按照你的计划直接使用正则表达式。 例如:
<t:textfield value="otherfield" validate="regexp=^a-z+$" />
我建议你看看他说的链接,那里有很好的解释(For Tapestry 5):http://tapestry.apache.org/forms-and-validation.html
答案 1 :(得分:0)
您使用的是t:id="newUser"
,但您的属性文件是addUser.properties
。你确定tapestry知道在哪里寻找password-regexp
吗?