2014-11-20 2 views
0

봄의 세계에서 새로운 꿀벌 인 Achinta입니다. 내가 직면하고있는 문제를 이해하고 해결하기 위해서는 작은 도움이 필요합니다. 나는 내 대답을 여기서 찾을 수 있기를 바랍니다.스프링 필드 필드 데이터 형식 변환, 오류

샘플 스프링 웹 프로젝트를 진행 중입니다. 여기에는 Controller 및 Bean 클래스와 UI 및 기타 아티팩트에 대한 JSP 페이지가 있습니다. 여기에 Bean 클래스가 있습니다.

@Entity 
@Table(name = "tblLoadCriteria") 
public class Load implements Serializable { 
    private Integer loadID; 
    private String loadCountry; 
    private String loadState; 
    private String loadCity; 
    private Integer totalAirVolume; 

    public Load() {//Constructor} 

    //And Getter & Setter methods for loadID, loadCountry, loadState, loadCity & totalAirVolume 
} 

내 Jsp 페이지의 스프링 양식.

<form:form id="systemForm" commandName="load" action="${pageContext.request.contextPath}/doSothing" method="POST" > 
    <spring:message code="loadCountry" />: <form:input path="loadCountry" /> 
    <spring:message code="loadState" />: <form:input path="loadState" /> 
    <spring:message code="loadCity" />: <form:input path="loadCity" /> 
    <spring:message code="totalAirVolume" />: <form:input path="totalAirVolume" /> 

    <spring:message code="save" text="Save" scope="page" var="save" /> 
    <input id="next" type="button" onClick="submitSave();" /> 
</form:form> 

그리고 여기 형 정수입니다 및 UI 페이지를 사용하여 봄에 결합되는 컨트롤러 코드 여기

@RequestMapping(value = "/doSothing", method = RequestMethod.POST) 
public String doSothing(HttpServletRequest request, HttpServletResponse response, @ModelAttribute("load") @Valid Load load , 
      BindingResult result, SessionStatus sessionStatus) { 

    loadService.saveLoad(load); 

    return "forward:getApplicationRequirements"; 
} 

내가로드 빈 클래스에의 "totalAirVolume"를 직면하고있는 문제를 간다 양식 태그. 하지만 UI에서 정수 대신 float 값 (F.Ex 12.12)을 입력하고 페이지를 제출하면 상태 : 400 오류가 발생합니다.

"totalAirVolume"필드의 유효성 검사를 위해 javascript에별로 신경 쓰지 않아서 Spring 처리 방법을 찾고 있습니다. 도와주세요.

귀하의 답변은 높이 평가됩니다.

감사 Achinta

답변

0

우선 DB에 무엇인가를 저장하기 전에 유효하거나 유효하지 않은 경우 각 필드를 확인하는 것이 좋습니다. 모델 객체 'Load'앞에 @Valid를 추가하면 JSR-303을 사용하여 bean 객체의 유효성을 검사하려는 것입니다. 그러나 Bean 클래스에서 @size와 같은 주석을 추가하지는 않는다. 이 부분을 확인하십시오 http://docs.spring.io/spring/docs/3.2.7.RELEASE/spring-framework-reference/htmlsingle/#validation-beanvalidation-overview, "7.8.1 JSR-303 Bean 유효성 검증 API 개요".

JSR-303 API를 사용하는 대신 'org.springframework.validation.Validator '를 구현하는 유효성 검사기를 만들고 규칙을 만드는 것이 좋습니다.

컨트롤러에서 개체를 저장하기 전에이 유효성 검사기를 호출하여 개체의 유효성을 검사하십시오. 오류가 있으면 올바른 내용을 입력하라는 오류 메시지를 반환하십시오.

@RequestMapping (값 = "/ doSothing"방법 = RequestMethod.POST) 공공 문자열 doSothing (HttpServletRequest의 요청, HttpServletResponse를 응답, 참고로

LoadValidator lv=new LoadValidator(); 
@ModelAttribute("load") @Valid Load load , 
      BindingResult result, SessionStatus sessionStatus) { 

    LoadValidator.validate(load); 
    if(result.hasErrors()){ 
     //do something 
     return something; 
    }else { 
     loadService.saveLoad(load); 
     return "forward:getApplicationRequirements"; 
    } 
} 

은 7.2 검증은 Spring의 Validator 인터페이스를 사용하여 "확인 위의 링크 중 "

0

이 검증/변환 오류의 경우 폼에 다시 돌아처럼 컨트롤러를 수정

@RequestMapping(value = "/doSothing", method = RequestMethod.POST) 
public String doSothing(HttpServletRequest request, HttpServletResponse response, @ModelAttribute("load") @Valid Load load , 
      BindingResult result, SessionStatus sessionStatus) { 
    // Return back to the form if the data is not valid 
    if (bindingResult.hasErrors()) { 
     return "yourFormViewName"; // Name of the view for your form 
    } 
    loadService.saveLoad(load); 
    return "forward:getApplicationRequirements"; 
} 

그리고 당신의 JSP 양식에 넣고 :

<form:errors> 요소는 서버 측 유효성 검사/변환 오류를 표시합니다 메시지.