如何在beaneditform上为密码字段制作正则表达式?

时间:2011-08-09 09:20:18

标签: java tapestry

我尝试在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;

2 个答案:

答案 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吗?