2013-08-29 3 views
0

JSP 페이지에 라디오 버튼이 있습니다.InitBinder 호출/호출되지 않음

<form:form modelAttribute="obj" action="save"> 
    <form:radiobuttons path="person" items="${List}"/> 

<form:button>Save</form:button> 
</form:form> 

목록 : 사람의 목록이 확대 개체 개체 : 그 JSP에서

Class obj{ 
    Person person; 
    getter/setters 
} 

을, 나는 특정 라디오 버튼을 선택하면 사람을 추가해야합니다. 내가 JSP에서 사람 개체의 문자열을 얻고 있기 때문에 컨트롤러 측

@RequestMapping(value = "/save", method = RequestMethod.POST) 
     public String postProcess(@ModelAttribute("obj") Obj obj,BindingResult error) { 

      //processing 
      return "anotherJsp"; 
     } 


    @InitBinder 
    public void initBinder(WebDataBinder binder, Locale locale, HttpServletRequest request) { 
    binder.registerCustomEditor(Obj.class,"person", new PropertyEditorSupport() { 
     @Override 
     public void setAsText(String text) { 
      //processing for conversion of person object String to Person Object 
      setValue(text); 
     } 
    }); 
} 

여기에

내가 그래서 내가 사람로 문자열에서 변환 할 수 없습니다 바인딩 예외 을 얻고있다 ... initbinder 사용하고 있습니다.

initBinder의 modelAttribute.Hence에 데이터를 바인딩 할 때 InitBinder가 호출되기 전에 문자열을 Person 객체로 변환합니다.

여기에서 가장 중요한 문제는 My InitBinder가 Not called/Invoked 인 것입니다.. 제게 해결책을주십시오.

감사합니다.

답변

2

중단 점 또는 디버그 문을 넣음으로써 호출되는지 여부를 확인하십시오.

모델 속성의 이름은 "obj"입니다. 하지만 propertyeditor에서는 "person"을 속성 경로로 사용했습니다.

"obj"를 propertyPath로 사용하거나 해당 매개 변수를 제거하고이 서명을 사용하십시오. registerCustomEditor(Class requiredType, PropertyEditor propertyEditor)

희망이 있습니다.

+0

나는 그런 식으로 또한했으나 아직 전화하지 않았다! –

+0

bind.registerCustomEditor (Ob .... 또는 setValue (text))에 중단 점을 넣으려고합니다. – krishnakumarp

+0

메서드에서 void System.Out void setAsText() –

2

어둠 속에서 야생 찔러 넣기 @InitBinderorg.springframework.web.bind.annotation에서 가져 오는 중입니까?

관련 문제