2012-06-13 4 views
4

Я хотел бы сделать поле ввода JSF inputText в верхний регистр, когда пользователь перемещает фокус в сторону от поля. Было бы лучше сделать это, используя тег f:ajax, и событие blur вызовет вызов сервера, чтобы сделать верхний регистр, или было бы лучше сделать это в JavaScript? Какая причина была бы не для этого в JavaScript? Лучше всегда делать такие вещи, используя аякс-вызов на стороне сервера?Как сделать верхний регистр поля ввода ввода JSF на размытие

ответ

20

Есть действительно 2 способа спасти это.

  1. Использование JavaScript.

    <h:inputText ... onblur="value=value.toUpperCase()" /> 
    
  2. Использование JSF.

    <h:inputText ... converter="toUpperCaseConverter"> 
        <f:ajax event="blur" render="@this" /> 
    </h:inputText> 
    

    @FacesConverter("toUpperCaseConverter") 
    public class ToUpperCaseConverter implements Converter { 
    
        @Override 
        public Object getAsObject(FacesContext context, UIComponent component, String submittedValue) { 
         return (submittedValue != null) ? submittedValue.toUpperCase() : null; 
        } 
    
        @Override 
        public String getAsString(FacesContext context, UIComponent component, Object modelValue) { 
         return (modelValue != null) ? modelValue.toString() : ""; 
        } 
    
    } 
    

JS подход очень прост. Тем не менее, это подрывает enduser, поскольку он выполняется полностью на стороне клиента, под полным контролем enduser. Конечный пользователь может отключить/пропустить этот JS-код и/или изменить параметр запроса, прежде чем он будет фактически отправлен на сервер. Подход JSF не подлежит подделке, поскольку это выполняется полностью на стороне сервера, поэтому это приводит к более надежному и надежному результату.

Вы должны решить, основываясь на тех фактах, которые соответствуют лучшим требованиям бизнеса.

2

Используйте это: style = "text-transform: uppercase", его работа для меня. И работайте с любой используемой вами платформой :) Я не думаю, что вам нужно использовать сложный путь к этой простой вещи.

+3

Обратите внимание, что это чисто презентационное, и поэтому значение не распространяется на верхнюю часть страницы на стороне сервера после отправки на него. Я понял, что OP хочет получить значение в верхнем и верхнем вкусах на стороне сервера. – BalusC

+0

спасибо за @BalusC и BlackKat, этот стиль - это то, что мне нужно (и, конечно же, в моем коде тоже прописные буквы). – WyllianNeo