2014-11-05 3 views
0

Spring MVC로 마이그레이션 할 JSP/Servlet으로 작성된 애플리케이션이 있습니다. 특정 문제가 발생할 때까지 모든 것이 잘 진행됩니다. 내 응용 프로그램은 노드의 특수 속성을 기반으로 텍스트 상자 및 파일 선택기가있는 임의의 XML 파일을 표시합니다. Servlets을 사용하여 XML을 탐색하고이를 기반으로 HTML을 작성했습니다. Spring MVC에서 모든 뷰는 이러한 유연성을 갖지 않는 JSP이다. 너무 역동적이어서 내 필요에 대해 완전히 정적입니다. 컨트롤러 클래스 내에서 스프링 MVC로 뷰를 동적으로 빌드하려면 어떻게해야합니까?스프링 MVC : 컨트롤러 런타임 내에서 뷰 만들기

예 :

<Sample> 
    <Field1> 
     <Type>String</Type> <!-- Will be a TextBox on the view --> 
     <Value>{@NS}</Value> <!-- NS :: Not Set --> 
    </Field1> 
    <Field2> 
     <Type>Nested</Type> <!-- The value tag is a nested Field! 
     <Value> 
      <Field21> 
       <Type>Object</Type> <!-- File Picker. The value of this node is base64 str of file --> 
       <Value>...</Value> 
      </Field21> 
      <Field22> 
       <Type>StringArray</Type> <!-- More Value tags can occur. A Plus sign on UI --> 
       <!-- Already set within view --> 
       <Value>V1</Value> 
       <Value>V2</Value> 
       ... 
      </Field22> 
      ... 
     </Value> 
    </Field2> 
    ... 
</Sample> 

이 같은 XML이 들어오는 그것은 N 필드를 가질 수 있고 M 시간을 중첩 될 수 있습니다.. 임의의 XML은 전혀 정적이지 않습니다. 공통 부분이 없으므로 JSP로 정적으로 작성된 뷰를 사용할 수 없습니다. 대신 Servlet을 사용하여 JSP 런타임을 만들고 컨트롤 값을 올바른 XML 노드에 바인딩합니다. 결과는 다음과 같이 나타납니다.

Field1: [------------] 
Field2: 
    Field21: [-----------] [Browse] 
    Field22: [-----------] 
      [-----------] [+] 

이 경우 내 모델은 실제 XML 문서입니다. 내 컨트롤러는 XML을 처리하고 뷰를 생성합니다. 뷰를 제출하면 모델이 업데이트되고 원본 XML이 DB에서 변경됩니다. 적어도 현재 솔루션이 서블릿에서하는 일입니다. Spring MVC에서도 같은 일을하고 싶다. 동적 뷰 생성. 다른 방법이 같을 것이다

AbstractView.jsp

<_html> 
     <_body> 
      <_form ...> 
       <_div><!-- Load dynamically generated content here... --></_div> 
      </_form> 
     <_/body> 
    </_html> 

:처럼 뭔가. 모든 가능한 뷰에 대한 공통 부분을 정의한 abstractview JSP 파일이 있습니다. 기본적으로 모든 내용이 실제 내용이지만 완전히 동적입니다.

+0

명확히하기 위해 컨트롤러의 특정 메서드를 호출 할 때마다 표준 레이아웃에서 사용자 지정보기를 작성하고 싶습니까? – Aeseir

+0

다소 차이가 있습니다. 표준 레이아웃이 없습니다. 아무것도 없습니다. 사용자가 XML을 업로드하고 처리하고 표시해야합니다. 게시물을 기본 예제로 업데이트하겠습니다. –

+0

예, 커뮤니티가 문제를 파악하는 데 도움이 될 수있는 한 가지 예가 있습니다. – Aeseir

답변

0

사용 사례가 JSP보기에 맞지 않습니다. JSP 뷰는 모델의 데이터를 추가하는 정적 구조 용입니다. 귀하의 모델은 JSP로는 너무 복잡합니다.

예를 들어, 저는 이전 서블릿 솔루션에 더 가깝게 붙잡고 컨트롤러가 직접 응답을 생성하고 응답이 이미 완료되었다고 말하면 NULL을 리턴하게합니다. 결국 서블릿 + JSP 아키텍처에서 서블릿은 일반적으로 JSP에 표시된 요청 속성에만 데이터를 넣습니다.

다른 방법으로는 사용자 지정 View + View 확인자 쌍을 만드는 것입니다. 그러나 솔직히 나는 약간의 이익을 위해 글을 쓰는 것이 더 어렵지 않을지를 말할 수 없습니다. 나는 그 부분에 대한 경험이 없다.