복붙노트

[SPRING] 비어있는 Java / Spring 양식 입력을 null 문자열로 변환하는 쉬운 방법이 있습니까?

SPRING

비어있는 Java / Spring 양식 입력을 null 문자열로 변환하는 쉬운 방법이 있습니까?

Java에서 빈 양식 입력을 null 문자열로 변환하는 쉬운 방법이 있습니까? 저는 spring mvc와 SimpleJdbcInsert를 사용하여 객체를 MySQL 데이터베이스에 삽입하고 있습니다. 나는 공백 입력을 데이터베이스에서 NULL 대신 NULL로 설정하고 싶습니다. 나는 꽤 많은 필드를 가지고 있으며, 수동으로 모든 값을 검사하지 않고이를 수행 할 수있는 방법을 찾고 있습니다.

감사!

편집 - 그래서 나는 바보 야. 내 실수에 여러 가지 오류가 결합되어 아래 정답이 정확하지 않다고 믿게되었습니다. 다음과 같이 propertyEditorSupport를 작성했습니다.

class StringEditor extends PropertyEditorSupport {  
    public void setAsText(String text) {  
        String value = text.trim();  
        if ("" == value) {  
            setValue(null);  
        }  
        else {  
            setValue(value);  
        }  
    }  
}  

두 가지 문제 - 먼저 getAsText가 없으므로 "null"문자열로 양식이 채워집니다! 둘째, 내 동등성 검사는 java가 아니라 C ++입니다. 추천 된 설정기를 시도했을 때 이미 "null"문자열이 포함 된 게시물을 다시로드했습니다. 모든 것을 정리하면 모든 것이 작동하기 시작합니다. 도움을 주셔서 감사 드리며 "운영자 오류"에 대해 사과드립니다.

브렛

해결법

  1. ==============================

    1.찾고있는 수업은 다음과 같습니다.

    찾고있는 수업은 다음과 같습니다.

    org.springframework.beans.propertyeditors.StringTrimmerEditor
    

    true로 구성하면 빈 / 공백 문자열을 null로 변환합니다. 바인더에 등록하는 방법은 기본값으로 사용할지 또는 특정보기에만 적용할지에 따라 다릅니다.

    예를 들어 하나의 컨트롤러에 추가 할 수 있습니다.

    @InitBinder
    public void initBinder(WebDataBinder binder) {
        binder.registerCustomEditor(String.class, new StringTrimmerEditor(true));
    }
    

    여기에 지침

  2. ==============================

    2.나는 이것이 오래되었다는 것을 알고 있지만 모든 컨트롤러에 바인더가있는 StringTrimmerEditor를 적용하는 아주 쉬운 방법을 찾을 때까지 약 2 ~ 3 시간을 낭비했습니다.

    나는 이것이 오래되었다는 것을 알고 있지만 모든 컨트롤러에 바인더가있는 StringTrimmerEditor를 적용하는 아주 쉬운 방법을 찾을 때까지 약 2 ~ 3 시간을 낭비했습니다.

    다시 한번 : 저는 RTFM을 기억해야합니다.

    Spring 3.2에서 @ ControllerAdvice-annottated 컨트롤러 클래스를 생성하고 @Affe 예제와 같이 @ InitBinder-annotated 메소드를 사용할 수있다.

    http://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/mvc.html#mvc-ann-initbinder-advice

    다음은 그 예입니다.

    @ControllerAdvice
    @Controller
    public class AppBindingInitializer {
    
        @InitBinder
        public void initBinder(WebDataBinder binder) {
            binder.registerCustomEditor(String.class, new StringTrimmerEditor(true));
        }
    
    }
    

    누군가가 도움이되기를 바랍니다.

  3. ==============================

    3.아마도 사용자 정의 바인더를 사용할 수 있습니다.

    아마도 사용자 정의 바인더를 사용할 수 있습니다.

  4. ==============================

    4.선택적 필드의 기본값을 NULL로 설정합니다. 실제로 기본적으로 NULL이 아닙니다.

    선택적 필드의 기본값을 NULL로 설정합니다. 실제로 기본적으로 NULL이 아닙니다.

    입력 문자열을 구문 분석 한 다음 채워진 열만 명시 적으로 지정하십시오.

     usingColumns
    

    오, 항상 당신의 의견을 위생적으로 정리하도록 조언합니다 ...

  5. from https://stackoverflow.com/questions/2977649/is-there-an-easy-way-to-turn-empty-java-spring-form-input-into-null-strings by cc-by-sa and MIT license