如何使模糊的JSF inputText字段大写

Bes*_*ces 7 jsf onblur jsf-2 uppercase

当用户将焦点移离字段时,我想将JSF inputText字段设置为大写字母.最好是使用f:ajax标签执行此操作并让blur事件触发对服务器的调用来执行大写,或者最好是在JavaScript中执行此操作吗?会是什么原因,是不是在JavaScript中做到这一点?使用ajax调用服务器端总是做这些事情是最好的吗?

Bal*_*usC 24

确实有两种方法来挽救这一点.

  1. 使用JavaScript.

    <h:inputText ... onblur="value=value.toUpperCase()" />
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用JSF.

    <h:inputText ... converter="toUpperCaseConverter">
        <f:ajax event="blur" render="@this" />
    </h:inputText>
    
    Run Code Online (Sandbox Code Playgroud)

    @FacesConverter("toUpperCaseConverter")
    public class ToUpperCaseConverter implements Converter {
    
        @Override
        public Object getAsObject(FacesContext context, UIComponent component, String submittedValue) {
            return (submittedValue != null) ? submittedValue.toUpperCase() : null;
        }
    
        @Override
        public String getAsString(FacesContext context, UIComponent component, Object modelValue) {
            return (modelValue != null) ? modelValue.toString() : "";
        }
    
    }
    
    Run Code Online (Sandbox Code Playgroud)

JS方法非常简单.但是,这可以被最终用户篡改,因为它在最终用户的完全控制下在客户端完全执行.最终用户可以在实际发送到服务器端之前禁用/跳过该JS代码和/或编辑请求参数.JSF方法不可篡改,因为这是在服务器端完全执行的,因此这会产生更加可靠和可靠的结果.

您必须根据最符合业务要求的事实来决定.