- 浏览: 695997 次
- 性别:
- 来自: 沈阳
文章分类
- 全部博客 (270)
- Ant Tool Script (12)
- XMLDigest (5)
- MyEclipse8.6 (1)
- RedHat (5)
- SVNVersionController (4)
- BatOperation (6)
- JspAndFaceWeb (66)
- javaSwing (18)
- PHP (12)
- J2SE (6)
- TestToolAndTestManual (12)
- C# (34)
- Java PatternDesign (20)
- Axis2AndWebService (5)
- ITLive (2)
- DBAndControl (10)
- C/C++ (8)
- Andriod (7)
- Python (7)
- JavaWork (16)
- Android-QA (1)
- Apache-Wicket (1)
- POI (1)
- JQuery (2)
- Struts2 (1)
- Flex&Flash (6)
- sdsdsd (0)
- 1212 (0)
最新评论
-
anayomin:
对九楼继续改进
public static <T> ...
Java List 分页 -
H4X0R:
来学习学习,赞一个
Aqua Data Studio 导出SQL -
yankai0219:
现在出现这个错误 Fatal error: Class 'PH ...
纯PHP搭建Apache+Eclipse+xDebug+PHPUnit+MakeGood -
yankai0219:
您好,我在搭建环境中提示PHPUnit_Framework_T ...
纯PHP搭建Apache+Eclipse+xDebug+PHPUnit+MakeGood -
wilsonchen:
chenhailong 写道wilsonchen 写道chen ...
C# RSA和Java RSA互通
今天我将具体的说明wicket到底是什么,以及自己的学习心得
1.官网
http://wicket.apache.org/
目前版本为1.5.3
2.Hello World 的例子:
我已经写过了wicket的HelloWorld,很简单,基本就是一个WebPage,一个WebApplication,还有一个Html
具体的下面链接:
HelloWorld:
http://wicket.apache.org/learn/examples/helloworld.html
Page to Page:
http://chenhailong.iteye.com/admin/blogs/1319936
这个比较复杂,但也看懂了就很简单了
Wicket MVC结构:
Model 数据层
View 默认为XHTML模板
Controller Application和Component类来处理
Wicket如何处理用户请求
入口:WebApplication
中间件:Session->RequestCycle->Request->ResponsePage
出口:Response
RequestCycle的处理过程:
Request->prepare->requestTargets.push(处理队列)->processEventAndResponse->Response(WebPage->renderPage)
WebPage处理过程:
WebPage->VisitChildren(Models)->inner Model->input render
wicket1.5.3基本组件:
Output:Label,MultiLineLabel,alternative markup
layout and grouping:
Panel,Border,Include,TabbedPanel,Fragment
Links:
Link,ExternalLink,PageLink,BookmarkablePageLink
Forms:
Form,Button,SubmitLink,TextField,TextArea,CheckBox,CheckGroup,
CheckBoxMultipleChoice,Palette,DropDownChoice,ListChoice,RadioChoice,
Radio,ListMultipleChoice,Select
细细分析
1.Label label = new Label("test", "<span>message</span>");
label.setEscapeModelStrings(false);
对应HTML:
<label wicket:id = "test" >I am a good man</label>
2.MultiLineLabel label = new MultiLineLabel("test");
对应HTML
<span wicket:id ="test"><p>用户名称<br/>生日为</p></span>
MultiLineLabel 控件并不是继承自Label 控件,而是直接继承自WebComponent。
3.<span wicket:id="panel">
<span wicket:id="birthday">在这里输出生日信息</span>
</span>
public class PanelPage extends WebPage {
public PanelPage() {
super();
Panel panel = new Panel("panel");
this.add(panel);
panel.add(new Label("birthday", "2006-09-09"));
}
}
4.<H1>这里是我的版权声明,请不要随便修改我的资料啊!</H1>
<html>
<body>
<span wicket:id="include"> 在这里放置通用的Html代码</span>
</body>
</html>
public class IncludePage extends WebPage {
public IncludePage() {
super();
this.add(new Include("include", "common.Html"));
}
}
1.如何避免将Wicket 标签输出到客户端?
protected void init() {
super.init();
this.getMarkupSettings().setStripWicketTags(true);
}
setOutputMarkupId(false)方法禁止输出wicket:id这个标识
2.如何转向一个非Wicket页面
// 通知Wicket将要进行页面转向
getRequestCycle().setRedirect(false);
// 通知Wicket页面转向,不需要向客户端输出信息
getRequestCycle().setRequestTarget(EmptyRequestTarget.getInstance());
// 设定一个路径,并进行页面转向
String contextPath = getApplication().getApplicationSettings().getContextPath();
getResponse().redirect(contextPath + "/path/to/legacyJspFile.jsp");
3.如何将字符串与URL 进行转换呢
Wicket 提供了灵活的数据转换功能,你只需要重载Component 的getConverter 方法就
可以在两种数据类型之间进行转换。这个方法是要返回一个IConvertor 的实现,用来实现
数据转换。
public Object convert(Object value, Class c) {
if (value == null) {
return null;
}
if (c == URL.class) {
(value.getClass() == URL.class) {
return value;
}
try {
return new URL(value.toString());
} catch (MalformedURLException e) {
throw new ConversionException("'" + value + "' is not a valid URL");
}
}
return value.toString();
}
我可以在Wicket使用Frame吗
在 Wicket 中使用Frame 其实是一个比较麻烦的问题,Tapestry 中也存在同样的问题,
经常出现"当前页面已经过期"。这是因为Wicket 是将所有的页面信息都保存在Session
中,默认保存5 个页面,如果客户端所请求的页已经不在Session 中,那么就会出现这样
一个错误。所以如果要使用Frame 的话,Wicket 建议通过参数方式来处理Frame,提供一
个pageMap 来指定Frame,还有就是尽量使用bookmarkablePage 参数来定义转向页面,也
建议多使用无状态页面,这样可以更加安全。
<Html>
<HEAD>
<TITLE>A simple frameset document</TITLE>
</HEAD>
<FRAMESET cols="20%, 80%">
<FRAMESET rows="100, 200">
<FRAME
src="myapp?pagemap=leftframe&bookmarkablePage=mypackage.MyNavigationPage">
<FRAME src="myapp?bookmarkablePage=mypackage.MyMainPage">
</FRAMESET>
<FRAME
src="myapp?pagemap=bottomframe&bookmarkablePage=mypackage.MyStatusBarPage">
</FRAMESET>
</Html>
我能够动态的指定Html 元素的某个属性值吗?
在做一个数据列表的时候,我希望根据奇偶行数显示不同的颜色,最好是通过样式表
来显示这一功能,即通过Html 属性class 来指定css 的名称。如何来动态的指定这个属性
值呢?
if (item.getIndex() % 2 == 1) {
item.add(new AttributeModifier("class", true, new Model("even")));
} else {
item.add(new AttributeModifier("class", true, new Model("odd")));
}
在前面基础控件介绍中,有一个增强的多选框控件,是否一定要提供一个
boolean 属性?
List list=(List)group.getModelObject();
//list中就是客户选择的数据记录
前一个例子中,使用了<wicket:remove>这个标签,编辑的时候,可以看到标签中的内
容,在输出的时候为什么没有了,它用来做什么啊?
<wicket:remove>并不是功能标签,它是一个声明标签,它是指Wicket 在输出Html
时,忽略其中的所有的内容。
Wicket 程序运行是动态的,所以运行一个列表的时候,通常只需要在一个表格行上加
上相应的wicket:id 就可以了,但是美工MM设计页面时是静态的,为了方便她们看到数
据,所以多写了一些表格行,但是这些内容在运行时并不需要,所以加上<wicket:remove>
标签声明,这样即方便了美工MM的工作,也不会对程序员开发Html 告成困扰。
我可以动态改变页面上的控件吗?
一、通过Wicket 提供的Panel 来解决问题:
首先准备两个Panel,一个是使用MultiRadioChoice 进行单选,还有一个则是使用
DropDownChoice 进行单选,可以在页面上声明一个Panel,然后根据可选项的情况来放置
不同的Panel。
if (jobs.size() > 5) {
this.add(new RadioChoicePanel("component", jobs));
} else {
this.add(new DropDownChoicePanel("component", jobs));
}
<wicket:panel>
<select wicket:id="jobs"></select>
</wicket:panel>
public class DropDownChoicePanel extends Panel {
public DropDownChoicePanel(String id,List jobs) {
super(id);
this.add(new DropDownChoice("jobs",jobs));
}
}
<wicket:panel>
<span wicket:id="jobs"></span>
</wicket:panel>
public class RadioChoicePanel extends Panel {
public RadioChoicePanel(String id, List jobs) {
super(id);
this.add(new RadioChoice ("jobs", jobs));
}
}
通过隐藏控件来解决这个功能:
public SingleComponentPage() {
super();
RadioChoice radioChoice = new RadioChoice("radioChoice", jobs);
DropDownChoice dropDownChoice = new DropDownChoice("dropDownChoice",
jobs);
this.add(radioChoice);
this.add(dropDownChoice);
if (jobs.size() > 5) {
dropDownChoice.setVisible(false);
} else {
radioChoice.setVisible(false);
}
}
我可以对数据验证时产生的错误进行排序吗?
你可以实现一个Comparator 接口,然后通过 setSortingComparator 方法设置这个
Comparator ,然后FeedbackPanel 可会通过这个Comparator 来对错误信息进行排序。
备注:传递给Comparator 的是FeedbackMessage,而不是String。
下面是一个简单的实例:
feedback.setSortingComparator(new Comparator() {
public int compare(Object o1, Object o2) {
FeedbackMessage m1 = (FeedbackMessage) o1;
FeedbackMessage m2 = (FeedbackMessage) o2;
return 1;
}
});
为什么我使用Tree 控件得到结果与书上写的不一样?
使用 extension 包中的Tree 控件,应该就不存在这个问题了,推荐方案!
WicketTester 进行单元测试
Application.getAjaxSettings().setAjaxDebugModeEnabled(false)关闭该调试功能
我一定要把Html 模板同Java 放置在一起吗?
不一定的,你可以将Html 模板放在任何一个目录下面,然后在Application 中配置相
应的文件路径,只要它的路径与Java 代码一致即可:
代码如下所示:
package org.wicket.demo.hello;
import wicket.protocol.http.WebApplication;
import wicket.util.file.Path;
public class HelloWorldApplication extends WebApplication {
protected void init() {
super.init();
this.getMarkupSettings().setStripWicketTags(true);
String path = "D:\\Program\\Eclipse\\Workspace\\Wicket\\Wicket\\src";
//这里放置Html模板的路径
Path resourcePath = new Path();
resourcePath.add(path);
this.getResourceSettings().setResourceFinder(resourcePath);
}
public Class getHomePage() {
return HelloWorldPage.class;
}
}
为什么会经常出现页面过期的问题?
void setMaxPageMaps(int maxPageMaps);
发表评论
-
2817955743
2014-11-01 19:47 02817955743 123456789 htt ... -
JQuery的替代品Zeptojs
2014-07-30 10:24 0Zepto的小巧已经不是JQuery的可以媲美的,Zepto ... -
121212
2014-01-30 11:04 0http://metroui.org.ua/example ... -
JS 操作Cookie,记录帐号信息
2013-11-25 16:49 1489嘻嘻,今天咱整点东西,如题 主页面和JS操作,已经在 ... -
How to install two tomcat in one computer
2013-10-28 11:31 1538Today,I get a problem,show in ... -
Jackson 双引号的问题
2013-08-28 15:57 3758当用执行下面的代码的时候 String json ... -
flex
2013-06-30 19:21 0<?xml version="1.0&qu ... -
iBatis简单实践
2013-06-18 10:29 1483今天我实践了下ibatis框架,感觉也不错,很简单。嘻嘻,大 ... -
Spring的长篇大论
2013-02-07 09:06 0很长时间了,时间过的真快啊,一晃3年过去了。3年我变了很多 ... -
JQuery的Flexigrid的API使用
2013-01-16 14:21 13493JQuery Flexigrid 是一个不错的table插 ... -
bacup
2013-01-16 06:06 0我备份了,怎么没有反应啊 http://www.micr ... -
Spring MVC and AJAX with JSON
2013-01-05 14:17 28501. maven 配置 <!-- Spr ... -
JQuery ajax use json communicate with server
2013-01-05 14:12 1241好久没写文章了,我也心痒痒的,嘿嘿。现在写一篇文章。 ... -
SpringMVC wizard简单示例
2012-12-28 17:02 0public class UserController ... -
get access time from tomcat log
2012-12-25 10:14 1158下面给出我得到tomcat的Access Time的方法 ... -
JSF简单实践
2012-11-21 12:03 964希望多了,破灭的机会就会更多,所以简简单单的希望,然后实现它, ... -
Extjs Template两个小例子
2012-11-15 09:40 1500今天用Extjs Template做了两个小例子嘿 代 ... -
Tomcat Romete Debug
2012-12-25 10:14 1009是我弟兄告诉我的。备忘录一下。 1,在Tom ... -
YUI
2012-10-29 15:05 0http://yuilibrary.com/forum/vie ... -
DBUnit的简单实践
2012-10-19 10:58 1407我不知道什么是失败,我也不知道失败后会是怎么样的天和地, ...
相关推荐
【实战Wicket学习总结】 Wicket是一个Java Web应用程序框架,以其独特的组件模型和强大的MVC设计而备受赞誉。本文将基于三年的Wicket项目经验,深入探讨Wicket的关键特性和在实际开发中遇到的问题及解决方案。 1. ...
Apache Wicket是一个为Java Web开发者提供的组件导向的框架,它能够帮助开发者在不编写大量JavaScript代码的情况下快速...通过学习本教程,Java开发者可以有效地掌握Wicket框架,开发出结构清晰、易于维护的Web应用。
Wicket 是一个开源的、基于组件的 Java Web 开发框架,它提供了一种简单而强大的方式来构建动态、交互性强的Web 应用程序。Wicket 的设计哲学是将Web 页面的视图与业务逻辑解耦,使得开发者可以专注于应用的业务需求...
这个“wicket简单实例”是为了帮助初学者理解Wicket的工作原理和基本操作,通过运行这些示例,你可以深入学习Wicket的核心特性。 1. **Wicket_link**: 这个示例展示了如何在Wicket应用中创建链接。Wicket的`Link`...
如链接所示,ITEYE博客上有关于Wicket的教程,这是学习Wicket的一个好起点。此外,官方文档、社区论坛和Stack Overflow等平台也是获取帮助和学习的好去处。 在压缩包"webLib"中,可能包含了Wicket应用的Web库文件...
【标题】:“apacke-wicket-mvn编译”指的是使用Apache Maven构建工具来编译一个基于Apache Wicket的项目。Apache Wicket是一款开源的Java Web应用框架,它以组件为基础,提供了丰富的功能来帮助开发者创建动态、...
### Wicket 学习知识点详解 #### 一、Wicket框架简介 Wicket是一个用于创建高度动态、交互式Web应用程序的Java服务器端框架。它强调简单性和灵活性,并且支持组件化开发模式,允许开发者像使用桌面应用开发一样...
Apache Wicket 是一个开源的Java Web应用程序框架,它以其组件化的模型、强大的状态管理和低级别的浏览器依赖性而受到开发者的欢迎。Wicket 相关书籍是深入理解和掌握这个框架的重要资源,下面将针对这些书籍提供的...
在本文中,我们将深入探讨Wicket框架中关于Tree组件的简单使用方法,这对于初学者来说是一份极好的学习资源。Wicket是一个强大的Java Web应用程序框架,它提供了丰富的组件库,其中包括用于显示层次结构数据的Tree...
### Wicket 1.4 开发手记:Hello World与环境配置 #### 一、引言 在《Wicket 1.4 开发手记》系列的第一篇文章中...对于想要学习Wicket或者寻求一种更加高效的Web开发方式的开发者来说,Wicket是一个值得尝试的选择。
在本篇“Wicket的学习(二)”中,我们将深入探讨Apache Wicket这一强大的Java Web应用程序框架。Wicket以其组件化、模型-视图-控制器(MVC)的设计模式和强大的状态管理机制,在Web开发领域占据一席之地。这篇博客...
**Wicket HelloWorld程序详解** Wicket是一个开源的Java Web应用程序框架,它强调组件化和模型-视图-控制器(MVC)的设计模式。这个“Wicket的Hello...对于初学者来说,理解这些基础知识是进一步学习Wicket的关键。
**Wicket 开发指南** Wicket 是一个开源的、基于Java的Web应用程序框架,它以其组件化、模型-视图-控制器(MVC)架构和轻量级特性而受到...通过学习和实践,你可以掌握使用Wicket构建高效、可维护的Web应用的技能。
- **低学习曲线:** 相比其他框架,Wicket 提供了一个更直观的 API 和简洁的文档,使得新用户能够快速上手。 - **规则配置:** 减少了对 XML 配置文件的依赖,简化了开发流程。 - **Ajax 支持:** 内置了对 Ajax ...
这个压缩包包含了一个Wicket的开发指南PDF文档以及一些示例项目,这些都是学习和掌握Wicket框架的重要资源。 一、Wicket框架简介 Wicket的核心理念是"组件就是一切",它将Web页面的HTML与Java代码紧密结合,通过...
此外,学习如何利用Wicket的会话管理和URL映射功能也是很重要的。 通过比较Wicket和Struts,我们可以看到Wicket更加注重代码的简洁性和可测试性,而Struts则更加强调配置和流程控制。理解这两种框架的优缺点可以...
通过分析和学习“wicket-menu-6.5.0.zip”中的源代码,开发者不仅可以掌握如何在Wicket中构建动态菜单,还可以学习到如何将这一技术应用到自己的项目中,提升用户体验。同时,开源的性质意味着可以借鉴社区的最佳...
Wicket是一款开源的Java Web应用程序框架,它强调了组件化和模型-视图-控制器(MVC)的设计模式。Wicket 1.4.0是该框架的一个版本,提供了丰富的功能和改进,使得Web开发更为简便。在本篇文章中,我们将深入探讨...