Java 如何在beaneditform上为passwordfield创建regexp?

Java 如何在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

我尝试在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="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+$" />