Как сделать регулярное выражение для поля пароля на beaneditform? - PullRequest
1 голос
/ 09 августа 2011

Я пытаюсь сделать регулярное выражение для поля пароля на 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 ]

1 голос
/ 09 августа 2011

Как сказал Влад, я также думаю, что в разметке нет встроенной проверки регулярных выражений в разметке, в конце этой ссылки поддерживаются поддерживаемые валидаторы (но, возможно, в используемой вами версии, не совсем уверен в этом).

Может быть, вы могли бы попытаться как-то использовать обработчик события onValidate lifeCycle, чтобы проверить это поле на предмет неправильного ввода.

@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

Не забудьте добавить тег в форму.

Обновление

Я был неправ, когда сказал, что невозможно использовать регулярное выражение непосредственно в разметке. Посмотрев на ссылку Хеннинга, я увидел, что есть возможность использовать регулярное выражение напрямую, как вы планировали. Пример:

<t:textfield value="otherfield" validate="regexp=^a-z+$" />

Я бы порекомендовал вам взглянуть на указанную им ссылку, там все хорошо объяснено (Для Гобелена 5): http://tapestry.apache.org/forms-and-validation.html

0 голосов
/ 09 августа 2011

Вы используете t:id="newUser", но ваш файл свойств addUser.properties. Вы уверены, что гобелен знает, где искать password-regexp?

...