正在学习Tapestry中,根据搜索的资料和情况发布学习心得,目前使用的Tapestry版本是5.0.6。
参考资料:
1. 主题: T5 技巧 2:为Grid组件的每一行增加“删除/修改”链接。
针对T5.0.5版本,方法稍微有点复杂(Order排序也已经过时)。目前版本是5.0.6,另给出了一个通用的简便的方法。
2. Adding modify/delete actions to a Grid
虽然贴的是代码,但是对于在网页中如何使用没有给出实现。
原理:
dengyin2000已经把原理说得很清楚了,扩展BeanModelSource以实现复杂的表格(Grid)显示。
操作过程:
1. 创建需要的PropertyConduit,也就是新列(可以复用显示多列);
2. 修改Page类,增加Model的获取方法;
3. 修改相应网页,使用Grid显示数据(需要注意的是,新建列的显示需加入自定义的代码实现)。
主要代码:
1. 新建需要的Property
java 代码
-
- class
Action
Property
implements
PropertyConduit {
- public
Object get(Object arg0) {
return
""
;}
- public
Class getPropertyType() {
return
String.
class
;}
- public
void
set(Object arg0, Object arg1) {}
- public
extends
Annotation> T getAnnotation(Class arg0) {
return
null
;}
- }
2. 修改Page类User,新增代码如下:
java 代码
- @Inject
- private
BeanModelSource _modelSource;
- @Inject
- private
ComponentResources _resources;
-
- public
BeanModel getModelForGrid() {
- PropertyConduit ap = new
Action
Property
();
- BeanModel result = _modelSource.create(User.class
,
false
, _resources);
- result.add("action", ap).label("操作").sortable(false);
- // 你也可以使用如下方法把action列放在uuid(在User类中必须要有可访问的getUuid()方法)列的前面
- // result.add(RelativePosition.BEFORE, "uuid", "action", ap).label("操作").sortable(false);
- // 你也可以复用ap再加入新列
- // result.add("chk", ap).label("选择").sortable(false);
- return
result;
- }
3. 修改相应网页UserList.tml,使用Grid的代码如下:
xml 代码
- <
table
t:type
=
"Grid"
model
=
"modelForGrid"
source
=
"users"
row
=
"currentUser"
pagerPosition
=
"bottom"
rowsPerPage
=
"5"
>
- <
t:parameter
t:name
=
"actionCell"
>
- <
a
t:type
=
"ActionLink"
t:id
=
"delete"
context
=
"currentUser.uuid"
>
删除a
>
<
a
t:type
=
"ActionLink"
t:id
=
"modify"
context
=
"currentUser.uuid"
>
修改a
>
- >
- >
部分完整代码
1. Page类UserList.java
java 代码
- import
java.util.List;
-
- import
org.apache.tapestry.Block;
- import
org.apache.tapestry.ComponentResources;
- import
org.apache.tapestry.PropertyConduit;
- import
org.apache.tapestry.beaneditor.BeanModel;
- import
org.apache.tapestry.ioc.annotations.Inject;
- import
org.apache.tapestry.services.BeanModelSource;
-
- import
com.senlang.sample.tapestryfive.demo.model.User;
- import
com.senlang.sample.tapestryfive.demo.service.UserService;
- import
com.senlang.sample.tapestryfive.demo.util.ActionProperty;
-
- public
class
UserList {
-
-
@Inject
-
private
Block _noData;
-
-
@Inject
-
private
UserService _usrv;
-
-
private
User _currentUser;
-
-
@Inject
-
private
BeanModelSource _modelSource;
-
-
@Inject
-
private
ComponentResources _resources;
-
-
public
List getUsers() {
-
return
_usrv.getAllUser();
- }
-
-
public
BeanModel getModelForGrid(){
- PropertyConduit ap =
new
ActionProperty();
- BeanModel result = _modelSource.create(User.
class
,
false
, _resources);
- result.add(
"action"
, ap).label(
"操作"
).sortable(
false
);
-
-
-
-
-
return
result;
- }
-
-
- Object onActionFromDelete(String uuid) {
- System.out.println(String.format(
"delete uuid=%s"
, uuid));
-
return
null
;
- }
-
-
- Object onActionFromModify(String uuid) {
- System.out.println(String.format(
"modify uuid=%s"
, uuid));
-
return
null
;
- }
-
-
public
Block getNoData() {
-
return
_noData;
- }
-
-
public
void
setNoData(Block noData) {
- _noData = noData;
- }
-
-
public
UserService getUsrv() {
-
return
_usrv;
- }
-
-
public
void
setUsrv(UserService usrv) {
- _usrv = usrv;
- }
-
-
public
User getCurrentUser() {
-
return
_currentUser;
- }
-
-
public
void
setCurrentUser(User currentUser) {
- _currentUser = currentUser;
- }
-
-
public
BeanModelSource getModelSource() {
-
return
_modelSource;
- }
-
-
public
void
setModelSource(BeanModelSource modelSource) {
- _modelSource = modelSource;
- }
-
-
public
ComponentResources getResources() {
-
return
_resources;
- }
-
-
public
void
setResources(ComponentResources resources) {
- _resources = resources;
- }
-
- }
2. 网页UserList.tml代码
xml 代码
- <!---->
- <
html
xmlns
=
"http://www.w3.org/1999/xhtml"
xmlns:t
=
"http://tapestry.apache.org/schema/tapestry_5_0_0.xsd"
>
- <
head
>
- <
meta
http-equiv
=
"Content-Type"
content
=
"text/html; charset=utf-8"
/>
- <
title
>
Samples - User Listtitle
>
- >
- <
body
>
- <
t:block
id
=
"nodata"
>
没有找到数据!t:block
>
- <
h1
>
List All Usersh1
>
- <
table
t:type
=
"Grid"
model
=
"modelForGrid"
source
=
"users"
-
row
=
"currentUser"
pagerPosition
=
"bottom"
rowsPerPage
=
"5"
empty
=
"nodata"
>
-
<
t:parameter
t:name
=
"actionCell"
>
-
<
a
t:type
=
"ActionLink"
t:id
=
"delete"
context
=
"currentUser.uuid"
>
删除<
a
>
-
<
a
t:type
=
"ActionLink"
t:id
=
"modify"
context
=
"currentUser.uuid"
>
修改<
a
>
- t:parameter
>
-
3. User类的实现代码
java 代码
- public
class
User {
-
private
String _uuid;
-
private
String _username;
-
private
String _password;
-
public
String getUuid() {
-
return
_uuid;
- }
-
public
void
setUuid(String uuid) {
- _uuid = uuid;
- }
-
public
String getUsername() {
-
return
_username;
- }
-
public
void
setUsername(String username) {
- _username = username;
- }
-
public
String getPassword() {
-
return
_password;
- }
-
public
void
setPassword(String password) {
- _password = password;
- }
- }
分享到:
相关推荐
MongoDB 5.0.6 windows版本
在Redis-5.0.6中,引入了一些新的特性和改进,比如模块系统(Module System),允许开发者扩展Redis的功能,创建自定义数据类型和命令。另外,此版本还提升了性能,优化了网络I/O,降低了内存占用,并修复了已知的...
《RealVNC-v5.0.6:远程访问与网络管理的强大工具》 RealVNC-v5.0.6是一款广泛使用的远程访问软件,尤其在IT行业,它被视为网络管理员的得力助手。该版本是RealVNC软件的第五个主要更新,版本号为6,表明了它在功能...
标题与描述概述的知识点主要涉及在VMware ESXi 5.1环境下安装SCO UNIX 5.0.6操作系统,这是一个针对老旧系统迁移至现代硬件平台的解决方案,利用虚拟化技术来克服硬件兼容性问题。下面将对这一过程进行详细解析。 #...
7. **模块系统**: Redis 5.0.6支持模块扩展,允许开发者为Redis添加自定义功能,例如地理位置索引、图形数据库等。 8. **内存管理**: Redis内存管理包括LRU(Least Recently Used)和LFU(Least Frequently Used)...
总之,Spring 5.0.6版本jar包是构建高效、可扩展的Java应用的基石,结合其丰富的模块和强大的第三方库支持,能够满足开发者的各种需求。对于Java开发者而言,深入理解和熟练掌握Spring框架的使用是提升开发效率和...
FumeFX的核心在于其流体模拟引擎,它基于物理的模拟方法,能够精确地模拟气体的行为,包括膨胀、压缩、燃烧、扩散等现象。这种模拟方式使得用户在3ds Max中可以创造出高度真实的火焰、烟雾、水和其他流体效果,极大...
在数据访问层,Spring Data项目继续扩展,提供了对各种数据库的简化访问,包括JPA、MongoDB、Neo4j等。5.0 版本可能包含对新版本数据库驱动的支持和新的查询方法。 文档方面,`spring-framework-5.0.6.RELEASE-docs...
iText-5.0.6对应的iTextAsian。 修改了Path
2. **highcharts-more.js**:扩展库,包含了更多高级图表类型。 3. **modules**目录:包含各种模块,如exporting(导出功能)、drilldown(下钻功能)等。 4. **themes**目录:预设的不同风格的主题文件,可以快速...
iText-5.0.6.jariText-5.0.6.jar
VNC 5.0.6 Windows版
《Spring Framework 5.0.6.RELEASE:Java后端开发的强大工具》 Spring Framework作为Java开发中的核心框架,以其强大的功能和灵活的设计理念,在后端开发领域占据着举足轻重的地位。5.0.6.RELEASE是该框架的一个...
ApiLogicServer-5.0.6-py3-none-any.whl
开始使用的iText-5.0.6.jar,比较新的了
Spring Framework 4.3.17 和 5.0.6 已发布,可从 repo.spring.io 和 Maven Central 获取更新。 官方表示,Spring Framework 4.3.17 包含了 15 个修复程序和一系列改进,而 Spring Framework 5.0.6 包含了 40 多个...
Spring Framework 5.0.6.RELEASE 是一个重要的版本,它是Java开发中广泛使用的轻量级框架...通过深入学习和实践,开发者可以构建出高效、可维护的Java应用,并充分利用Spring的灵活性和扩展性来应对复杂的企业级挑战。
MySQL Connector/J 5.0.6 是 MySQL 数据库与 Java 应用程序之间的桥梁,它是一个 JDBC 驱动程序,允许 Java 开发者在 Java 应用中连接到 MySQL 数据库并执行 SQL 查询。MySQL Connector/J 遵循 Java Database ...
《Sco Unix 5.0.6 中文环境 东方龙马:系统安装与操作详解》 Sco Unix 5.0.6 是一款历史悠久且备受赞誉的Unix操作系统版本,特别针对中文用户进行了本地化处理,由东方龙马公司提供支持。这个版本的发布为当时的...
这个压缩包"iText-5.0.6.zip"包含的是iText库的5.0.6版本,一个在2013年发布的稳定版本。iText库主要用于创建、修改、合并以及解析PDF文档,使得开发人员能够方便地在应用程序中集成PDF功能。 iText的核心功能包括...