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

时间:2012-06-13 18:30:28

标签: jsf jsf-2 uppercase onblur

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

3 个答案:

答案 0 :(得分:22)

确实有两种方法来挽救这个。

  1. 使用JavaScript。

    <h:inputText ... onblur="value=value.toUpperCase()" />
    
  2. 使用JSF。

    <h:inputText ... converter="toUpperCaseConverter">
        <f:ajax event="blur" render="@this" />
    </h:inputText>
    

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

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

答案 1 :(得分:3)

使用:style =“text-transform:uppercase”,它适用于我。 并使用你使用的任何flatform :) 我不认为你必须用复杂的方法来处理这个简单的事情。

答案 2 :(得分:1)

我建议结合BalusC和BlackKat提供的解决方案:

<h:inputText ... onblur="value=value.toUpperCase()" style="text-transform: uppercase" />

在这种情况下,键入时(BlackKat解决方案的优势)您甚至看不到任何lowerCase输入,提交的值将变成大写(BalusC解决方案的优势)