希望大家一切都好。场景是我有一个表单,上面有名称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中做到这一点?

最佳答案

您需要创建一个转换器。

例如。

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

10-08 15:55