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에 추가
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | < 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에 추가
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <!-- 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 버전 충돌 오류 발생
1 2 3 4 5 6 7 | 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 값을 제거
1 2 3 4 5 | <!-- 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파일의 확장자까지 지정
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | 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)
1 2 3 4 5 6 | <?page title= "new page title" contentType= "text/html;charset=UTF-8" ?> <zk> <window title= "new page title" border= "normal" > New Content Here! </window> </zk> |