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

标签 java jsf jsf-2

希望你们一切都好。场景是我有一个表单,上面有名称 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/

相关文章:

jsf - 从 JSF2 中的操作导航时如何传递 View 参数?

java - 获取ListView中当前项的行id

java - 数据绑定(bind)后组合框不可编辑

java - Spring Boot OAuth - 同一用户的多个访问 token

java - 有可用的简单 JSF 命令按钮示例吗?

java.lang.OutOfMemoryError : Java heap space - how to save memory? 错误

java - Elastic search 使用 Java api 查找索引是否存在

jsf - 如何将 Hibernate Validator 与 Primefaces 客户端站点验证 (CSV) 结合使用

java - JSF 2.0 : <f:viewParam> and default converters

jsf-2 - Primefaces p :ajaxStatus for non ajax requests