Пользовательское сообщение проверки для проверки бина - PullRequest
3 голосов
/ 08 ноября 2011

Я создаю приложение JSF 2 и пытаюсь использовать проверку формы в компоненте вместо страницы лиц.Я также хотел бы использовать файл .properties для хранения сообщений.

Я посмотрел на этот вопрос , но я не думаю, что файл свойств настроен правильно.

Допустим, у меня есть bean-компонент с именем User в пакете с именем dev:

@ManagedBean
@SessionScoped
public class User implements Serializable {

    @Pattern(pattern=".+@.+\\.[a-z]+", message="{dev.User.emailAddress}")
    private String emailAddress;

    // getter/setter
}

Я также создал файл 'ValidationMessages.properties' в WEB-INF / classes (IЯ использую Netbeans 7.0.1)

В файле ValidationMessages.properties у меня есть строка ключа / значения:

dev.User.emailAddress=Custom invalid email message

И мое представление (user.xhtml) выглядит следующим образомэто:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html">
<h:head>
    <title>User registration</title>
</h:head>
<h:body>
    <h:form>
        <h:inputText id="emailAddress" value="#{user.emailAddress}" required="true" />
        <h:message for="emailAddress" />
        <h:commandButton value="Ok" action="null" />
    </h:form>
</h:body>

Когда я ввожу недопустимый адрес электронной почты и нажимаю кнопку, сообщение проверки на веб-странице гласит:

{dev.User.emailAddress}

вместо

Custom invalid email message

Может быть проблема в том, что я не зарегистрировал свой файл свойств в web.xml?

Я должен переключить required = "true" на @NotNull в bean-компоненте.Есть ли что-то еще, что мне нужно сделать, кроме как вставить это:

<context-param>
    <param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name>
    <param-value>true</param-value>
</context-param>

, как объяснено в блоге BalusC ?

Заранее спасибо!

/ Денис

Ответы [ 2 ]

3 голосов
/ 08 ноября 2011

Я также создал файл 'ValidationMessages.properties' в WEB-INF / classes (я использую Netbeans 7.0.1)

Я так понимаю, вы сами положили это прямо в папку /WEB-INF/classes проекта? Это, вероятно, будет проигнорировано / переопределено, если вы позволите вашей IDE собрать / развернуть WAR (по крайней мере, это верно для Eclipse). Вы должны поместить этот файл прямо в корень исходной папки Java проекта. Вы можете сами проверить, действительно ли он попал в /WEB-INF/classes, после экспорта проекта в файл WAR, а затем распаковать его с помощью некоторого инструмента ZIP.

2 голосов
/ 10 ноября 2011

Я поместил файл .properties в папку ресурсов, и он работал, не было необходимости нигде регистрировать файл.Для справки: я использую Netbeans 7.0.1 и Maven.

Спасибо за помощь, BalusC!

...