如何在丢失焦点和发送到服务器之前更改输入文本值

时间:2011-11-23 10:42:43

标签: java jsf jsf-2

希望你们一切顺利。 scenerio是我有一个表格,其中有名称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 个答案:

答案 0 :(得分:1)

您需要创建一个转换器。

E.g。

@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()将在验证阶段运行,并在更新模型值并重新渲染视图之前执行所需的转换。

相关问题