希望你们一切都好。场景是我有一个表单,上面有名称 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()
将在验证阶段运行,并在更新模型值和重新呈现 View 之前执行所需的转换。
关于java - 如何在焦点丢失和发送到服务器之前更改输入文本值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8240781/