#jsf #jsf-2 #bean-validation
#jsf #jsf-2 #проверка компонента
Вопрос:
Какой конвертер будет использоваться для преобразования строковых значений при проверке компонента JSF? Например, для числовых значений, которые мы используем <f:convertNumber>
, и для даты, которую мы используем <f:convertDataTime>
. Мой самый короткий код следующий: страница JSF:
<h:inputText id="Name" label="Name" value="#{employee.eName}"/>
<h:message for="Name" styleClass="errorMessages"/>
Класс компонента:
public class Employee implements Serializable{
@NotNull @Size(min = 3, max = 30)
String eName;
}
Комментарии:
1. Можете ли вы опубликовать пример того, чего вы пытаетесь достичь?
Ответ №1:
String
не имеет конвертера по умолчанию. Параметры запроса String
уже.
Если вы собираетесь подключить пользовательский конвертер String
, используйте
@FacesConverter(forClass=String.class)
public class StringConverter implements Converter {
// ...
}
Единственный вариант использования, который я видел для этого, — это установить их в null
вместо пустой строки, но этого также можно достичь, установив следующий параметр контекста в web.xml
.
<context-param>
<param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name>
<param-value>true</param-value>
</context-param>
Таким образом, @NotNull
аннотация будет запускаться при отправке пустой строки. В противном случае вам придется вместо этого использовать специфичный для гибернации @NotBlank
режим.