Есть ли конвертер для строки?

#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 режим.

Смотрите также