目前正在使用Wicket + xhtml + JQuery + Spring + Hibernate在做一个电子商务网站,类似于京东的那样,通过这些时间的使用,总结了一下Wicket 学习笔记。
Wicket 的页面包含两个基本的文件,分别.html 和.java 文件,.html文件负责界面的描述,.java文件负责实现逻辑了,比如提供数据。在默认的情况下,.html和.java放在同一个包里面,wicket引擎的默认搜索路径是在java文件的所在的包下面搜索,我很不喜欢这种方式,因为如果文件一多,混在一起很不好定位,而且如果你是使用Eclipse WTP来开发Web项目,你可能会将html文件放在 WebContent 的pages文件夹下,将资源(比如图片,CSS,JS) 放在Web工程下面的 WebContent 文件夹下的resource文件夹下(注意,我使用的是Wicket 1.4,不能引用resources文件夹的文件,很奇怪,难道resources是关键字?),这样的话,在pages文件夹下面的html文件可以直接将resource 文件夹作为参考目录进行引用,比如pages下面的IndexPage.html可以通过 这样使用 resource/styles/common/ 文件夹下面的 common.css 文件,图片也可以通过这样引用。如果你将html和java文件放在同级目录,就没有这么方便了,可能需要在路径前面添加N个 ” ../ ” 这样的符号来定位上级目录
<link href= "resource/styles/common/common.css" rel= "stylesheet" type= "text/css" >
那到底怎么样才能分类html和java文件呢?
你可以自己创建 ResourceStreamLocator 的子类来自定义搜索路径。然后在你的WebApplication中这样添加 <!--endfragment-->
我的 ResourceStreamLocator 子类是这样写的:
/**
* 资源定位器。
*
* @author 刘尧兴 2009-10-16
*/
public class EasyBuyResourceStreamLocator extends ResourceStreamLocator {
/** */
private ServletContext servletContext;
/**
* 构造函数。
* @param servletContext
*/
public EasyBuyResourceStreamLocator(ServletContext servletContext) {
this.servletContext = servletContext;
}
@Override
public IResourceStream locate(Class<?> clazz, String path) {
if(matchClass(clazz, ParentPage.class)) {
URL resourceUrl = getPageHtmlResourceUrl(clazz, path);
if (resourceUrl != null) {
return new UrlResourceStream(resourceUrl);
}
}
if(matchClass(clazz, ParentPanel.class)) {
URL resourceUrl = getPanelHtmlResourceUrl(clazz, path);
if(resourceUrl != null)
return new UrlResourceStream(resourceUrl);
}
// resource not found; fall back on class loading
return super.locate(clazz, path);
}
/**
* 匹配文件类型 。
* @author 刘尧兴
* @param source
* @param target
* @return boolean
*/
public boolean matchClass(Class source,Class target) {
if(source == target)
return true;
if(source.getSuperclass() == target)
return true;
if(source.getSuperclass().getSuperclass() == target)
return true;
if(source.getSuperclass().getSuperclass().getSuperclass() == target)
return true;
return false;
}
/**
* 货物HTML页面资源URL 。
* @author 刘尧兴
* @param clazz
* @param path
* @return URL
*/
private URL getPageHtmlResourceUrl(Class<?> clazz, String path) {
try {
return servletContext.getResource("/"+path);
} catch (MalformedURLException e) {
e.printStackTrace();
}
return null;
}
/**
* 获得HTML面板的资源URL 。
* @author 刘尧兴
* @param clazz
* @param path
* @return URL
*/
private URL getPanelHtmlResourceUrl(Class<?> clazz, String path) {
try {
return servletContext.getResource("/"+path);
} catch (MalformedURLException e) {
e.printStackTrace();
}
return null;
}
}
我的WebPage页面都继承自我自定义的ParentPage类,在资源定位器搜索的时候时判断一下类型,这样就不会将其他的WebPage的资源给拦截了,比如Wicket自带的页面错误页面。
<!--EndFragment-->
getResourceSettings().setResourceStreamLocator(new EasyBuyResourceStreamLocator(getServletContext()));
在我的项目中我简化了包结构,下面是我的包结构:
我将页面java代码(继承自 org.apache.wicket.markup.ht ml.* 下 的类)放在page源文件夹下面,非页面java代码放在src源文件夹下面,conf源文件夹放Hibernate和Spring的配置文件。page源文件下面的包结构和WebContent下面的pages文件夹保持一致。
分享到:
相关推荐
使用资源包聚合多个资源 16.8。将JavaScript放在页面正文中 16.9。标题贡献者定位 16.10。自定义资源 16.11。安装资源 16.12。Lambda支持 16.13。共享资源 16.14。自定义资源加载 16.15。CssHeaderItem和...
wicket开发指南,wicket 新型的web开发框架,现以能无逢支持jsr168/286
wicket国际化例子 含有wicket:message StringResourceModel 等读取properties资源文件的代码示例
wicket 开发指南 比较全面的介绍wicket的使用
Wicket开发指南 Wicket开发指南 Wicket开发指南
wicket学习文档
Wicket has been around since 2004 and it has been an Apache project since 2007. During these years it has proved to be a solid and valuable solution for building enterprise web applications. Wicket ...
wicket 基础知识培训,主要是讲解wicket入门知识,通过和struts比较来进行讲解。
Wicket 入门,以及Eclipse里建立project
wicket编译所需的maven库,搬运
wicket-menu.zip,Wicket菜单
wicket 6.x api.chm wicket帮助文档
这是继wicket的简单实例之后,关于tree的简单用法,初学者可以下载下来学习如何生成树,以及树的使用
wicket-examples 示例 wicket-examples 示例 wicket-examples 示例 wicket-examples 示例
Wicket 开发指南,wicket介绍,环境搭建,使用方法
开发详解想写一份这样的Wicket 文档,源于2005 年中,那是用Wicket1.0 完成了第一个项目以 后的想法,觉得如此好的一个Web 框架,应该让更多的开发人员了解和使用它。因此在 05 年9 月份的时候开始了这份文档的初稿...
Wicket,有一个优秀的Web框架。和Struts和Webwork类似的Java WEB开发框架。优点在于对HTML和业务代码进行了有效的分离(流行的WEB框架大多如此)。基于规则的配置(有效减少了XML配置文件的使用,与Spring相比,...
从wicket官网中下载的wicket1.4.7中jar包,对于编写wicket相关的程序有所需要的朋友可以下载
Wicket是一个基于Java的Web开发框架,与Struts,WebWork,Tapestry类似。其特点在于对Html和代码进行了有效的分离(有利于程序员和美工的合作),基于规则的配置(减少了XML等配置文件的使用),学习曲线较低(开发...
wicket相关书籍 好东西啊