希望大家一切都好。场景是我有一个表单,上面有名称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()
将在验证阶段运行,并在更新模型值和重新渲染视图之前执行所需的转换。