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

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>

결과 이미지