一) 官方网站发布的新消息wicket6.0已经发布了,上一个版本是1.5。可见官方直接升级了主版本号。
org.apache.wicket wicket-core 6.0.0 org.apache.wicket wicket-extensions 6.0.0 org.apache.wicket wicket-auth-roles 6.0.0 org.apache.wicket wicket-spring 6.0.0
spring嘛,在spring3.2还没有正式发布之前还是先用3.1或者2.5,个人觉得如果不用spring-mvc的话,2.5还是挺好用的。要加的依赖jar也只有一个。
org.springframework spring 2.5.6
或者
org.springframework spring-test 3.1.2.RELEASE test org.springframework spring-context-support 3.1.2.RELEASE org.springframework spring-web 3.1.2.RELEASE aopalliance aopalliance 1.0 org.aspectj aspectjweaver 1.6.11
二) 配置spring容器
在web.xml中用监听器,每个spring的web项目都要这么做。
org.springframework.web.context.ContextLoaderListener contextConfigLocation classpath:spring-beans.xml
三) wicket框架的核心组件是一个servlet
web.xml 被注释掉的部分在正式部署上线的时候一定要记得不注释符号去掉。
Application org.apache.wicket.protocol.http.WicketServlet applicationFactoryClassName org.apache.wicket.spring.SpringWebApplicationFactory applicationBean wicketApplication 1 Application /*
四) wicketApplication Bean 要加入代码。
package com.ztgame.webapp.wicket; import org.apache.wicket.Page; import org.apache.wicket.protocol.http.WebApplication; import org.apache.wicket.spring.injection.annot.SpringComponentInjector; import org.springframework.stereotype.Component; import com.ztgame.webapp.wicket.page.HelloWorldPage; @Component("wicketApplication") public class Application extends WebApplication { @Override protected void init() { super.init(); super.getComponentInstantiationListeners().add(new SpringComponentInjector(this)); } @Override public Class extends Page> getHomePage() { return HelloWorldPage.class; } }
五) 在Page对象中注入业务层的Bean
package com.ztgame.webapp.wicket.page; import org.apache.wicket.markup.html.WebPage; import org.apache.wicket.markup.html.link.ExternalLink; import org.apache.wicket.spring.injection.annot.SpringBean; import com.ztgame.webapp.wicket.service.SomeService; public class HelloWorldPage extends WebPage { private static final long serialVersionUID = -4345240865727174450L; @SpringBean private SomeService someService; public HelloWorldPage() { ExternalLink externalLink = new ExternalLink("externalLink", "http://yingzhuo.iteye.com", someService.getString()); super.addOrReplace(externalLink); } }
比较奇怪的是wicket做注入既没有使用JSR250的标注或者JSR330的标注,而是用了自己定义的一个标注。
另外,需要注意的是wicket与spring集成以后不可以通过构造方法注入,只能通过field或者property注入。