2017-01-24 2 views
1

JSP 형식으로 성공적으로 사용하고있는 POJO가 있습니다. 양식을 표시 할 수 있으며 결과를 다시 게시 할 수 있습니다.봄 MVC 빈 변환

<form:form method="post" class="form-horizontal" id="viewForm" 
      action="${pageContext.request.contextPath}/FooAdmin/saveFoo" modelAttribute="FooAdminWebDTO"> 

     <div class="form-group"> 
     <form:label class="col-sm-2" path="FooDTO" for="FooDTO" required="true">XYZ:</form:label> 
     <form:input class="col-sm-5" path="FooDTO" id="FooDTO" type="number" value="${FooAdminWebDTO.FooDTO.FooXYZ}" required="true"/> 
    </div> 

    <div class="form-group"> 
     <form:label class="col-sm-2" path="success" for="success" required="true">Success:</form:label> 
     <form:input class="col-sm-5" path="success" id="success" type="text" value="SUCCESS" required="true"/> 
    </div> 

문제는 내 POST 지역에 있습니다 여기에 ModelAttribute 모 데르 콩이 내 JSP 페이지에서 제외하고있다

public class FooAdminWebDTO implements Serializable { 

private static final long serialVersionUID = -5296961362891142744L; 

private List<FooDTO> FooDTOList; 
private String success = "success"; //..etc 

입니다.

@RequestMapping(value = "/FooAdmin/saveFoo", method = RequestMethod.POST) 
public ModelAndView saveFooByID(@ModelAttribute("FooAdminWebDTO") FooAdminWebDTO s, BindingResult bindingResult) { 
    return new ModelAndView(); 
} 

그러나, 예상대로, 난 단지 성공 필드의 내용을보고 있어요하는 것은 봄에 의해 채워지고 : 나는 성공적으로 올바른 컨트롤러 방법을 타격하고있다. 성공 필드는 간단한 문자열입니다. (다른 모든 복합 필드는 널입니다.) FooDTO : 여기

는 개체입니다

@JavascriptMappable 
public class FooDTO implements Serializable { 

private static final long serialVersionUID = -5974170234812308892L; 
private String FooDescription; 
private int additionQuantity; 

누군가가이 작업을 수행하는 방법에 나를 인도 할 수주십시오? 구성을 위해 XML을 사용하므로 config와 관련된 모든 대답을 염두에 두십시오. 중첩 된 객체가 상당히 깊어서 내 객체를 들어오는 POST 객체에 바인딩하는 방법이 필요합니다.

감사합니다.

+0

컨트롤러에 'productAdminWebDTO'객체 속성을 설정했는지 확인하는 것입니다. 내 생각이 아니라면 'productDTO'필드의 가치를 어떻게 기대하고 있는지 생각해보십시오. JSP 페이지에 'productAdminWebDTO.productDTO.productPrice'값이 표시됩니까? –

답변

0

경로 형식의 값 : 입력은 개체에 채울 속성에 매핑해야합니다.

예컨대 경로는 form bindinghttp://docs.spring.io/spring/docs/current/spring-framework-reference/html/view.html#view-jsp-formtaglib-formtag 또는 간단한 설명에 더 많은 정보를 찾을 수있는 무언가

path="productDTO.productPartNumber"처럼해야 ProductAdminWebDTO.ProductDTO.productPartNumber의 입력 태그 . 귀하의 경우에는 표시 할 때와 마찬가지로 많이 표시되는 중첩 된 객체에 액세스해야합니다. .

+0

고마워요.하지만 JSP 페이지의 프리젠 테이션과 관련이있는 답을 이해하지 못합니다. JSP 페이지가 잘 렌더링됩니다. JSP 페이지의 필드가 모두 채워집니다.POST에서 컨트롤러의 서버로 돌아가서 양식 값을 가져 오려고 할 때 문제가 발생합니다. "success"String을 제외한 모든 필드가 null입니다. –

+0

당신이 제안한 것이 JSP를 깨뜨린 것입니다. 빈 클래스 [ProductAdminWebDTO]의 'productAdminWebDTO'속성이 잘못되었습니다. 빈 속성 'productAdminWebDTO'을 읽을 수 없거나 잘못된 getter 메소드가 있습니다. getter의 반환 유형이 매개 변수 유형 설정자와 일치합니까? –

+0

productAdminWebDTO는 양식 요소에 modelAttribute로 설정되어 있으므로 path 값에 있어서는 안됩니다. 나는 적응할 것이다 – Redlab

0

HttpMessageConverter은 HTTP 요청 메시지를 관련 Java 객체로 변환합니다. 우리의 경우에는 요청이있을 때 JSON을 Java 객체로 변환하려고합니다. Spring은 변환을 수행하기 위해 MIME 유형과 연관된 HttpMessageConverter을 구체적으로 살펴볼 것입니다.

프로젝트 변환기에 jackson 종속성을 추가하고 봄에 메시지 변환기로 등록해야합니다.

확인이 너무가 : Spring 3.0 making JSON response using jackson message converter

+0

나는 content = "application/json"을 보지 못했다. 컨트롤러가 json을 받아들이기를 원하면 거기에 정의해야한다. http://stackoverflow.com/questions/17835545/spring-mvc-not-able-to-submit-form-data-in-json-format – Redlab

+0

다시 한 번, 양식조차도 확실하지 않습니다. 양식에서이를 지원합니까? 그 옆에 application/json으로 양식을 제출하는 브라우저가 있습니까? http://stackoverflow.com/questions/38017123/is-form-enctype-appication-json-available – Redlab

+0

나는 이것이 붉은 청어라고 생각합니다. 어느 방법 으로든 작동하므로 내용을 명시 적으로 설정하는 것을 잊어 버렸습니다. 그래서 나는 포스트 질문에서 이것을 제거했습니다. 모든 경우에 기본 문자열이 변환되지만 여전히 복합 유형은 변환되지 않습니다. –

0

오류를 발견. 그것은 JQuery 조각이었습니다

 $('#viewForm input').attr("disabled", true); 
    $('#viewForm select').attr("disabled", true); 

필드를 편집 할 수 없도록 JSP의 다른 곳에서 사용하고있었습니다. 양식을 다시 사용하도록 설정하는 것을 잊어 버렸기 때문에 올바르게 제출되지 않았습니다. 도움을 주려고하는 사람들에게 감사드립니다.

+0

당신이 일하게되어 기쁩니다. 코드를 더 게시해야하는 경우 더 빨리 해결되었을 수도 있고 잘못된 방향으로 해결책을 찾지도 않았을 것입니다. – Redlab