如何使JSF inputText字段在模糊时大写

问题描述 投票:7回答:3

当用户将焦点从该字段移开时,我想将JSF inputText字段变为大写。最好使用f:ajax标记执行此操作,并让blur事件触发对服务器的调用以进行大写,还是最好在JavaScript中执行此操作?使用JavaScript进行not的原因是什么?最好总是使用对服务器端的Ajax调用来做这些事情吗?

jsf jsf-2 uppercase onblur
3个回答
24
投票

确实有两种方法可以解决这个问题。

  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() : "";
        }
    
    }
    

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

您必须基于那些最适合业务需求的事实来决定。


2
投票

使用此:style =“ text-transform:大写”,它对我有用。并使用您使用的任何平台:)我认为您不必对这种简单的事情使用复杂的方法。


1
投票

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

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

在这种情况下,键入时(BlackKat解决方案的优势,您甚至看不到任何lowerCase,并且提交的值将成为upperCase'd(BalusC解决方案的优势)

© www.soinside.com 2019 - 2024. All rights reserved.