2012-06-13 5 views
4

사용자가 필드에서 멀리 초점을 이동하면 JSF inputText 필드를 대문자로 만들고 싶습니다. f:ajax 태그를 사용하여이 작업을 수행하고 blur 이벤트가 서버에 호출하여 대문자 사용을 트리거하도록하거나 JavaScript에서이 작업을 수행하는 것이 가장 좋을까요? JavaScript에서 이 아닌 이유는 무엇이입니까? 항상 서버 측에 대한 ajax 호출을 사용하여 이러한 종류의 작업을 수행하는 것이 가장 좋습니다.블러에 JSF inputText 필드 대문자를 만드는 방법

답변

20

참으로 이것을 구제하는 두 가지 방법이 있습니다.

  1. JavaScript를 사용 중입니다.

    <h:inputText ... onblur="value=value.toUpperCase()" /> 
    
  2. JSF를 사용.

    @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 방식

<h:inputText ... converter="toUpperCaseConverter"> 
    <f:ajax event="blur" render="@this" /> 
</h:inputText> 
은 매우 간단하다. 그러나 이것은 최종 사용자가 완전히 조작 할 수 있기 때문에 최종 사용자가 완전히 조작 할 수 있기 때문에 최종 사용자가 조작 할 수 있습니다. 최종 사용자는 JS 코드를 비활성화/건너 뛰거나 요청 매개 변수가 실제로 서버 측에 전송되기 전에 편집 할 수 있습니다. JSF 방식은 서버 측에서 완전히 수행되므로 조작 할 수 없으므로보다 견고하고 신뢰할 수있는 결과를 얻을 수 있습니다.

비즈니스 요구 사항에 가장 적합한 사실을 기반으로 결정해야합니다.

2

다음과 같이 사용하십시오. style = "text-transform : uppercase", 나를 위해 작동합니다. 그리고 당신이 사용하는 모든 플랫폼을 작동하십시오. 나는 그 간단한 일에 복잡한 방법을 사용해야한다고 생각하지 않습니다.

+3

이것은 순전히 프레젠테이션 형식이므로 값을 제출 한 후 서버 측에서 대문자로 표시되지 않습니다. 나는 OP가 서버 측에서도 대문자로 된 향미의 가치를 원한다는 것을 이해했다. – BalusC

+0

@BalusC와 BlackKat에 감사드립니다.이 스타일은 내가 필요로하는 것입니다. 물론 내 코드에서도 대문자입니다. – WyllianNeo

관련 문제