Как изменить значения inputText при потере фокуса и перед отправкой на сервер - PullRequest
2 голосов
/ 23 ноября 2011

Надеюсь, у вас все будет хорошо. У меня есть форма, на которой есть поле ввода inputText. Я хочу, чтобы, если пользователь набрал ' в имени, он был заменен на //. Я сделал функцию замены. Но я не знаю, как я могу это сделать, используя ajax. Например, если у меня есть поле ввода, подобное этому

<h:inputText id="name" value="#{user.name}">
    <f:ajax event="blur" render="nameError name"/>
</h:inputText>
<h:message for="name" id="nameError" style="color: red" />

Теперь я хочу, чтобы, если пользователь вводит 'Basit'Mahmood'Ahmed' в поле имени, то при потере фокуса значение становится //Basit//Mahmood//Ahmed//. Поэтому, когда пользователь нажимает кнопку отправки, на сервер должно быть отправлено //Basit//Mahmood//Ahmed//, а не 'Basit'Mahmood'Ahmed'.

Как я могу сделать это в JSF 2.0?

1 Ответ

1 голос
/ 23 ноября 2011

Вам необходимо создать конвертер.

Например,

@FacesConverter("userNameConverter")
public class UserNameConverter implements Converter {

    @Override
    public String getAsString(FacesContext context, UIComponent component, Object value) {
        return (String) value;
    }

    @Override
    public Object getAsObject(FacesContext context, UIComponent component, String value) {
        return (value != null) ? value.replaceAll("'", "//") : null;
    }

}

с

<h:inputText id="name" value="#{user.name}" converter="userNameConverter">

getAsObject() будет работать на этапе проверки и выполнять требуемое преобразованиеперед обновлением значения модели и перерисовкой представления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...