2015-10-20 6 views
1

В моем приложении JSF 2.2, когда я создаю форму JSF, проблема в том, что я могу поместить пробелы в начало <h:inputText>, когда я вставляю их из своей формы и верну эти пространства с моим значением, которое я вставил в него. Поэтому я должен обрабатывать каждое значение с mystring.tirm(), чтобы аннулировать пробелы. Могу ли я использовать что-то еще, чтобы вернуть это значение без пробелов? Я знаю об конвертере и JavaScript, так что вы можете дать мне другой вариант использования? Я не хочу использовать какой-либо конвертер и JavaScript.Как предотвратить пробелы в форме JSF h: inputText

+0

Я не хочу использовать какой-либо конвертер и javascript – user1608962

+0

Вы можете использовать trim() в setter: 'this.field = field.trim()'. – Geinmachi

ответ

12

Я не хочу использовать любой конвертер и JavaScript

Там нет никакой магии здесь. Вы должны написать код для выполнения задания. Я понимаю, что ваша забота больше о том, что вы не хотите повторять одно и то же задание преобразования в каждом отдельном поле ввода.

В этом случае просто зарегистрируйте конвертер именно на String.class с помощью атрибута forClass@FacesConverter, как показано ниже.

@FacesConverter(forClass=String.class) 
public class TrimConverter implements Converter { 

    @Override 
    public Object getAsObject(FacesContext context, UIComponent component, String submittedValue) { 
     String trimmed = (submittedValue != null) ? submittedValue.trim() : null; 
     return (trimmed == null || trimmed.isEmpty()) ? null : trimmed; 
    } 

    @Override 
    public String getAsString(FacesContext context, UIComponent component, Object modelValue) { 
     return (modelValue != null) ? modelValue.toString() : ""; 
    } 

} 

Таким образом, вам не нужно декларировать преобразователь в каждом поле ввода. Он будет применяться прозрачно для каждого значения модели String, которое еще не имеет зарегистрированного явного конвертера.

JavaScript-метод не рекомендуется, поскольку он полностью работает на стороне клиента, и конечные пользователи могут легко отключить и управлять JavaScript. Конвертер JSF работает на стороне сервера, и его результат не управляется конечным пользователем.

0

Я действительно настоящая проблема в другом месте. Я столкнулся с тем же делом в своих формах (используя postgresql и JSF 2.1)

Когда я создал поле типа «char (20)». В этом случае я получил ненужные пробелы в h: inputText.

Затем я изменил тип поля на «меняющийся символ (20)». В этом случае не было пробелов в h: inputText.

Вот объяснение этого; Postgresql doc

 Смежные вопросы

  • Нет связанных вопросов^_^