Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使JSF inputText字段在blur上大写_Jsf_Jsf 2_Uppercase_Onblur - Fatal编程技术网

如何使JSF inputText字段在blur上大写

如何使JSF inputText字段在blur上大写,jsf,jsf-2,uppercase,onblur,Jsf,Jsf 2,Uppercase,Onblur,当用户将焦点从字段移开时,我想将JSF inputText字段变成大写。最好使用f:ajax标记并让blur事件触发对服务器的调用以执行大写字母,还是最好使用JavaScript?在JavaScript中不这样做的原因是什么?始终使用对服务器端的ajax调用来完成这类事情是最好的吗?确实有两种方法可以挽救这一点 使用JavaScript <h:inputText ... onblur="value=value.toUpperCase()" /> JS方法非常简单。但是,这是可以被

当用户将焦点从字段移开时,我想将JSF inputText字段变成大写。最好使用
f:ajax
标记并让
blur
事件触发对服务器的调用以执行大写字母,还是最好使用JavaScript?在JavaScript中不这样做的原因是什么?始终使用对服务器端的ajax调用来完成这类事情是最好的吗?

确实有两种方法可以挽救这一点

  • 使用JavaScript

    <h:inputText ... onblur="value=value.toUpperCase()" />
    
  • JS方法非常简单。但是,这是可以被终端用户篡改的,因为它完全在客户端执行,完全由终端用户控制。最终用户可以在请求参数实际发送到服务器端之前禁用/跳过该JS代码和/或编辑请求参数。JSF方法是不可篡改的,因为这完全是在服务器端执行的,所以这会产生更可靠的结果

    您必须根据这些事实来决定哪一个最适合业务需求。

    使用这个:style=“text transform:uppercase”,它适合我。 并使用您使用的任何平台:)
    我认为你不必用复杂的方式来完成这件简单的事情。

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

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

    在这种情况下,您在输入时甚至看不到任何小写字母(BlackKat solution advantage),提交的值将是大写字母(BalusC solution advantage)

    请注意,这纯粹是一种表示,因此提交到服务器端后,该值不会在服务器端大写。我知道OP希望服务器端的值也是大写的。感谢@BalusC和BlackKat,这种风格正是我所需要的(当然我的代码中也需要反大写)。这是这个问题的完美答案,因为它简单。
    @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() : "";
        }
    
    }
    
    <h:inputText ... onblur="value=value.toUpperCase()" style="text-transform: uppercase" />