Java 如何在beaneditform上为passwordfield创建regexp?
我尝试在beaneditform上为passwordfield创建regexp,但passwordfield不识别regexep???请提供任何建议??) addUser.tmlJava 如何在beaneditform上为passwordfield创建regexp?,java,tapestry,Java,Tapestry,我尝试在beaneditform上为passwordfield创建regexp,但passwordfield不识别regexep???请提供任何建议??) addUser.tml <t:beaneditform t:id="newUser" exclude="id" reorder="userName,password,fullName,Gender,email,role"> .......................... <t:parameter t:name="pas
<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.java:
@Persist
@Property
private User newUser;
您使用的是
t:id=“newUser”
,但您的属性文件是addUser.properties
。您确定tapestry知道在哪里查找密码regexp吗?您使用的是t:id=“newUser”
,但您的属性文件是addUser.properties
。您确定tapestry知道在哪里查找密码regexp
?正如Vlad所说,我还认为tapestry中的标记中没有集成的regexp检查,请在最后查看支持的验证器(但您使用的版本中可能有,对此并不确定)
也许您可以尝试使用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"));
}
}
无论如何,我确信有不止一种方法可以做到这一点,但这只是一个例子。
我没有编译并尝试它,但我很确定这是可以做到的方法之一。如果需要更多帮助,请查看此页面:
记住将标签添加到表单中
更新
当我说不可能在标记中直接使用regexp时,我错了。
在查看了Heanning的链接之后,我发现有可能按照您的计划直接使用regexp。
例如:
我建议您看看他所说的链接,这里有很好的解释(对于Tapestry 5):正如Vlad所说,我还认为Tapestry中的标记中没有集成的regexp检查,请在最后查看支持的验证器(但您使用的版本中可能有,对此并不确定) 也许您可以尝试使用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"));
}
}
无论如何,我确信有不止一种方法可以做到这一点,但这只是一个例子。
我没有编译并尝试它,但我很确定这是可以做到的方法之一。如果需要更多帮助,请查看此页面:
记住将标签添加到表单中
更新
当我说不可能在标记中直接使用regexp时,我错了。
在查看了Heanning的链接之后,我发现有可能按照您的计划直接使用regexp。
例如:
我建议你看看他所说的链接,这里有很好的解释(对于Tapestry 5):Tapestry知道在哪里可以找到,因为我一直在使用regexp处理电子邮件、用户名……这对于用户名和电子邮件都很好!tapesty知道去哪里找,因为我一直在用regexp处理电子邮件、用户名…这个处理用户名和电子邮件很好!不,在Tapestry 5.0及其后版本中,有一个regexp验证器-请参阅,或在您提供的secord链接中。@Henning这些都是好消息。我只是浏览了一下那个链接并更新了我的答案,所以他也可以选择为regxp使用目录。无论如何,伟大的链接(1+在评论中)我尝试为passwordfield提供regexp,而不是为textfield@dusmanka Do,试试passwordfield和textfield几乎是一样的。如果对其中一个有效,则对另一个有效。不,在Tapestry 5.0及其后版本中,有一个regexp验证器-请参阅,或在您提供的secord链接中。@Henning这些都是好消息。我只是浏览了一下那个链接并更新了我的答案,所以他也可以选择为regxp使用目录。无论如何,伟大的链接(1+在评论中)我尝试为passwordfield提供regexp,而不是为textfield@dusmanka Do,试试passwordfield和textfield几乎是一样的。如果对一个有效,对另一个应该有效。你没有得到验证吗。。。或者您是否遇到运行时异常?否则,您的解决方案看起来不错,尽管您的类名真的是“addUser”(传统上Java类名是大写的,所以看起来很奇怪)。。。或者您是否遇到运行时异常?另外,您的解决方案看起来不错,尽管您的类名真的是“addUser”(传统上Java类名是大写的,所以看起来很奇怪)。
<t:textfield value="otherfield" validate="regexp=^a-z+$" />