2012-05-01 2 views
0

나는 아래에 구현하는 최적의 방법을 찾기 위해 다른 사람의 뇌 (& 경험)를 빌리려고합니다.봄 : 런타임에 사용자 정의보기를 선택하는 가장 좋은 방법

현재 많은 클라이언트가 사용할 응용 프로그램에서 작업 중이며 각 클라이언트의 요구 사항에 따라 UI 사용자 지정이 필요합니다. 기본 자바 코드와 비즈니스 로직이 같을지라도, 런타임에 (어떤 속성을 통해) 어떤 클라이언트가 애플리케이션을 실행하고 있는지 파악하고 해당 뷰를 선택하고 웹 페이지를 표시하고 싶습니다.

현재 내가 생각할 수있는 것은 클라이언트 이름 속성을 읽고이를 사용하여보기를 해결하는 사용자 지정 ViewResolver (InternalResourceViewResolver 확장)를 만드는 것입니다 (예 : WEB-INF/jsp // account/myAccount.jsp) 또는 클라이언트 속성이없는 경우 다른보기 (예 : WEB-INF/jsp/default/account/myAccount.jsp)로 기본 설정하십시오.

여기서 볼 수있는 문제는 기본보기를 렌더링해야하는 특정 클라이언트에 대해 모든 JSP를 덮어 쓰지 않을 수 있다는 것입니다. 기본으로 되돌리기 전에 클라이언트 폴더에 JSP 파일의 존재를 확인하기 위해 I/O 호출이 필요합니다. I/O에 대응하기 위해 애플리케이션 시작시 덮어 쓴 JSP 맵을 작성할 수도 있지만 새로운 맞춤 JSP를 추가 할 때 애플리케이션을 다시 시작해야합니다.이 맵은 일부 맵을 새로 고치기 위해 다시 서비스 할 수 있습니다.

그럼 너희들은 어떻게 생각하니? 또한 리디렉션에 어떤 영향을 미칩니 까? Plz 우리의 설치 또는 요구 사항에 대한 추가 정보가 필요하면 알려주십시오.

감사합니다,
수밋

+0

새 JSP를 프로덕션 서버에 동적으로 추가하지 않을 예정입니까? 내 세계에서 이러한 변경 사항을 테스트해야하며 소스 트리에 태그를 지정해야하며 전쟁을 다시 생성해야하며 앱을 다시 배포해야합니다. 정적 (또는 느슨하게 구성된) 맵은 정상입니다. –

+0

고마워 JB ... 잘 JSP로 배포하는 간단한 핫픽스로 시나리오 중 하나만 응용 프로그램을 다시 시작해야합니다 (응용 프로그램이 단일 war 파일보다는 디렉터리 구조에 있음). 그러나 모든 변경 사항은 테스트 환경에서 확실히 테스트됩니다. – Sumit

답변

0

더 의견/제안을 기다리고 후, 내 자신의 솔루션을 것.

귀하의 도움에 감사드립니다.

0

당신은 그것을 봄과 함께 번들로 기본 뷰 리졸버를 가지고 뷰의 렌더링을 제어하기 위해 타일을 사용할 수 있습니다 그리고 당신은 그것을 확장 할 수 있습니다.

맞춤 레이아웃을 정의하고 확장하고 다른 동작이 필요한 경우 변경할 수 있습니다. JB는 제안 질문 자체에 설명 된대로

http://tiles.apache.org/

+0

안녕 Zabil, 우리는 이미 우리의 머리말, 꼬리말, 기타 공통 부분 등을 정의하기 위해 장식물을 사용하고 있습니다. 문제는 예를 들어 말할 때입니다. 클라이언트는 표 형식의 열에 표시되는 일부 데이터를 원하지만 반면에 다른 형식은 div 형식을 원합니다. 또한 메타 태그에서 호출 된 데코레이터에 따라 해당 클라이언트에 대한 후속 레이아웃도 사용 가능한 경우로드해야합니다. – Sumit

관련 문제