프로그래밍

Sping 3.1에서 ZK Framework의 zul를 MVC로 연동하기

약올랑 2014. 2. 23. 16:16

Spring Tool Suite(STS)에서 ZK Framework 설치를 하였다면, 샘플코드를 돌려보자.

시원하게 한방에 되는게 없다.

또다른 삽질과 시간 절약에 도움이 되길..

참고한 사이트



zk libraries 다운로드한 후,lib폴더를 WEB-INF\에 복사한다.


web.xml에 추가

<servlet> <servlet-name>zkLoader</servlet-name> <servlet-class> org.zkoss.zk.ui.http.DHtmlLayoutServlet </servlet-class> <init-param> <param-name>update-uri</param-name> <param-value>/zkau</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet> <servlet-name>auEngine</servlet-name> <servlet-class> org.zkoss.zk.au.http.DHtmlUpdateServlet </servlet-class> </servlet> <servlet-mapping> <servlet-name>zkLoader</servlet-name> <url-pattern>*.zul</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>auEngine</servlet-name> <url-pattern>/zkau/*</url-pattern> </servlet-mapping>


pom.xml에 추가

<!-- zk framework --> <dependency> <groupId>org.zkoss.zk</groupId> <artifactId>zkspring-core</artifactId> <version>3.1</version> </dependency> <dependency> <groupId>org.zkoss.zk</groupId> <artifactId>zkspring-webflow</artifactId> <version>3.1</version> </dependency> <dependency> <groupId>org.zkoss.zk</groupId> <artifactId>zkspring-security</artifactId> <version>3.1</version> </dependency>


웹 어플리케이션 런칭하면 SLF4J 버전 충돌 오류 발생

SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/~/spring/vfabric-tc-server-developer-2.9.3.RELEASE/base-instance/wtpwebapps/mytest/WEB-INF/lib/logback-classic-0.9.9.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/~/spring/vfabric-tc-server-developer-2.9.3.RELEASE/base-instance/wtpwebapps/mytest/WEB-INF/lib/slf4j-log4j12-1.6.6.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. SLF4J: slf4j-api 1.6.x (or later) is incompatible with this binding. SLF4J: Your binding is version 1.5.5 or earlier. SLF4J: Upgrade your binding to version 1.6.x.

해결 방법

pom.xml에서 <org.slf4j-version>1.6.6</org.slf4j-version> 항목을 찾은 후, 1.5.5 값으로 변경


view파일은 jsp가 아닌, zul파일을 사용해야 하므로

servlet-context.xml에서 view파일의 확장자까지 지정할 수 있도록 suffix 값을 제거

<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory --> <beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <beans:property name="prefix" value="/WEB-INF/views/" /> <beans:property name="suffix" value="" /> </beans:bean>


컨틀롤러 코드에서 view파일의 확장자까지 지정

import java.text.DateFormat; import java.util.Date; import java.util.Locale; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; /** * Handles requests for the application home page. */ @Controller public class HomeController { private static final Logger logger = LoggerFactory.getLogger(HomeController.class); @RequestMapping(value = "/test1", method = RequestMethod.GET) public String home() { logger.info("Welcome home! The client locale is "); return "new_file.zul"; } }

뷰 코드(new_file.zul)

<?page title="new page title" contentType="text/html;charset=UTF-8"?> <zk> <window title="new page title" border="normal"> New Content Here! </window> </zk>

결과 이미지