- 浏览: 148380 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
415421979:
我也遇到了这个问题 求解啊
JBoss/Tomcat 安装路径带空格时 JNDI 无法初始化的BUG -
ivonxiao:
谢谢楼主的分享
异常管理系统 -
ivonxiao:
谢谢楼主的分享~~
Java对象的强、软、弱和虚引用
ActionLink组件
页面响应时,创建了一个链接。如果触发了链接时,组件ActionLink得到一个监听器(通过调用方法actionTriggered())。
DirectLink组件
DirectLink组件涉及到session,与ExternalLink组件的区别有两个:
第一: DirectLink涉及session,DirectLink拥有一个boolean类型的stateful参数来选择stateful或stateless,该参数默认为true,即stateful。而ExternalLink却不涉及session,ExternalLink仅仅是stateless,不能够选择。
第二:非常重要的是,DirectLink与ExternalLink参数传递方式不一样。DirectLink通过listener监听方法将参数“扔”给下一个页面。而ExternalLink通过在下一个页面实现IExternalPage接口以及activateExternalPage方法“接收”参数。
为了实现分页功能,我们使用DirectLink组件实现。在下面的例子,每个页面我们只显示10条数据,那么HQL就只从数据库中查询出10条数据。对于页面来说,就需要实现“下一页”(或“上一页”)页面跳转,以及向我们的业务逻辑层方法传递分页参数(即当前页码,以及每页显示数据数)。
请看对应的HTML文件中相关代码:
<span jwcid="@Conditional" condition="ognl:firstDisable">
<span jwcid="first">首页</span>
<span jwcid="previous">上一页</span>
</span>
第 <span jwcid="@Insert" value="ognl:pageNo" /> 页
<span jwcid="@Conditional" condition="ognl:lastDisable">
<span jwcid="next">下一页</span>
<span jwcid="last">尾页</span>
</span>
共 <span jwcid="@Insert" value="ognl:total" /> 页
在page文件中声明相关组件:
<component id="first" type="DirectLink">
<binding name="listener" expression="listeners.changePage"/>
<binding name="parameters" expression="new java.lang.Object[]{first,maxResult}"/>
</component>
<component id="previous" type="DirectLink">
<binding name="listener" expression="listeners.changePage"/>
<binding name="parameters" expression="new java.lang.Object[]{previous, maxResult}"/>
<binding name="disabled" expression="previousDisable"/>
</component>
<component id="next" type="DirectLink">
<binding name="listener" expression="listeners.changePage"/>
<binding name="parameters" expression="new java.lang.Object[]{next, maxResult}"/>
<binding name="disabled" expression="nextDisable"/>
</component>
<component id="last" type="DirectLink">
<binding name="listener" expression="listeners.changePage"/>
<binding name="parameters" expression="new java.lang.Object[]{last,maxResult}"/>
</component>
DirectLink组件表现为一个HTML<a>元素,用来提供一个URL,当用户点击时,触发页面中一个特定的监听方法。
在实现分页页面跳转的四个组件里,都声明为同一个listener监听方法。请看相应java中的对应监听方法changePage的代码:
public void changePage(IRequestCycle cycle) {
//Tapestry4.0已经deprecated了cycle.getListenerParameters()
Object[] parameters = cycle.getServiceParameters();
//获取当前页码
Integer ig1 = (Integer) parameters[0];
int i1 = ig1.intValue();
setPageNo(i1);
//获取每页最大显示数目
Integer ig2 = (Integer) parameters[1];
int i2 = ig2.intValue();
setMaxResult(i2);
}
对于DirectLink,parameters参数的赋值方式于ExternalLink一样。这里获取的是一个数组,这个数组包含了两样信息:即将跳转的页码数,以及即将跳转的页面显示多少条数据。
在前面,我们提到过,页面的java文件在完成页面表现所需数据的处理后,应该将其所有成员变量(页面property)还原为初始值。所以,“当前页码” 以及“每页最大显示数据”这两个数据,我们将它们“保存”在页面上。当点击触发监听方法后,再由页面来提供下一个页面的“页码”和“每页最大显示数目”。然后再查询新的maxResult条数据。
运行效果图如下:
ExternalLink组件
ExternalLink组件使用的是Tapestry的9种service中的external service。该组件使用External Service 创建继承了IExternalPage接口的一个链接。下面用一个例子说明它的用法。
<a jwcid="@ExternalLink" page="SuccessPage" parameters='ognl:new java.lang.Object[]{"This is Success Page!", item.id}'disabled="ognl:item.Isable"></a>
page="SuccessPage"这个参数的作用,就是指定了将要跳转的页面名称,ExternalLink组件的page参数根据配置文件tapestry.application文件中的配置找到对应的page文件:
<page name="SuccessPage" specification-path="/WEBINF/SuccessPage.page"/>
然后在SuccessPage.page文件中,根据:
<page-specification class="com.ce.tapestry.Success">
找到对应的Success.java文件。在Success.java文件中,我们发现该类继承了IExternalPage接口:
public abstract class Success implements IExternalPage
以及实现了activateExternalPage(Object[],IRequestCycle)方法。
对于ExternalLink组件,它必须继承IExternalPage接口,并实现public void activateExternalPage(Object[] parameters,IRequestCycle cycle)方法。该方法的参数Object[]来自该组件的parameters参数的值。 disabled参数默认为false,当为true时,不能被“点击”。
GenericLink组件
组件GenericLink通常用于跳转到应用程序范围以外的链接。 虽然GenericLink可以用其他组件也能完成,但是GenericLink更灵活:它可以设置为disabled,象DirectLink或者ActionLink一样也能包含Rollover组件。
使用方法如下:
<a jwcid="@GenericLink" href="ognl:item.homepage" disabled="false"/>
Href参数:其作用很明显,就是提供一个链接地址。从上例可知:从item.homepage取出地址。
disabled参数:该参数默认为false,当为true时,不能被“点击”。关于disabled参数,所有link类组件都有,作用均相同。
PageLink组件
PageLink组件非常简单,只需要在page参数中指明需要跳转到下一个页面的名字。相当于不带参数的ExternalLink。不过需要注意的是,PageLink和ExternalLink使用的不是同一个service,该组件使用了Page Service创建了另外一个链接URL。
使用方法请见例子:
<a jwcid="@PageLink" page="Infos"><img src="images/lyb.gif" width="50" height="18" border="0">
</a>
跳转到以下的URL:http://localhost:8080/hello/helloworld?service=page/Upload
ServiceLink组件
创建任意不带有参数的引擎服务,ServiceLink组件用法与ActionLink,PageLink和DirectLink等组件相似,但常常与具体的应用服务一起使用。Service参数是要调用的EngineService对象的名称。(Body)
以上的Link类组件,都需要在Body组件范围内使用。
contrib:PopupLink 组件
Html 模板代码:
<h1> PopopLink组件: </h1><p>
作用:弹出一个自定义的窗口,相当于一个 Script语名:
<br> window.open(URL, windowName, windowFeatures) <br>
1.必须在Body组件内使用。 <br>
2.注意href参数它会产生一个地址“/context/href参数值”
<p> <span jwcid = "@contrib:PopupLink" href = "/WEB-INF/Home.html" features = 'ognl:"resizable,scrollbars,top=100,left=100,height=400,width=300"' > PopupLink到主页 </span>
页面响应时,创建了一个链接。如果触发了链接时,组件ActionLink得到一个监听器(通过调用方法actionTriggered())。
DirectLink组件
DirectLink组件涉及到session,与ExternalLink组件的区别有两个:
第一: DirectLink涉及session,DirectLink拥有一个boolean类型的stateful参数来选择stateful或stateless,该参数默认为true,即stateful。而ExternalLink却不涉及session,ExternalLink仅仅是stateless,不能够选择。
第二:非常重要的是,DirectLink与ExternalLink参数传递方式不一样。DirectLink通过listener监听方法将参数“扔”给下一个页面。而ExternalLink通过在下一个页面实现IExternalPage接口以及activateExternalPage方法“接收”参数。
为了实现分页功能,我们使用DirectLink组件实现。在下面的例子,每个页面我们只显示10条数据,那么HQL就只从数据库中查询出10条数据。对于页面来说,就需要实现“下一页”(或“上一页”)页面跳转,以及向我们的业务逻辑层方法传递分页参数(即当前页码,以及每页显示数据数)。
请看对应的HTML文件中相关代码:
<span jwcid="@Conditional" condition="ognl:firstDisable">
<span jwcid="first">首页</span>
<span jwcid="previous">上一页</span>
</span>
第 <span jwcid="@Insert" value="ognl:pageNo" /> 页
<span jwcid="@Conditional" condition="ognl:lastDisable">
<span jwcid="next">下一页</span>
<span jwcid="last">尾页</span>
</span>
共 <span jwcid="@Insert" value="ognl:total" /> 页
在page文件中声明相关组件:
<component id="first" type="DirectLink">
<binding name="listener" expression="listeners.changePage"/>
<binding name="parameters" expression="new java.lang.Object[]{first,maxResult}"/>
</component>
<component id="previous" type="DirectLink">
<binding name="listener" expression="listeners.changePage"/>
<binding name="parameters" expression="new java.lang.Object[]{previous, maxResult}"/>
<binding name="disabled" expression="previousDisable"/>
</component>
<component id="next" type="DirectLink">
<binding name="listener" expression="listeners.changePage"/>
<binding name="parameters" expression="new java.lang.Object[]{next, maxResult}"/>
<binding name="disabled" expression="nextDisable"/>
</component>
<component id="last" type="DirectLink">
<binding name="listener" expression="listeners.changePage"/>
<binding name="parameters" expression="new java.lang.Object[]{last,maxResult}"/>
</component>
DirectLink组件表现为一个HTML<a>元素,用来提供一个URL,当用户点击时,触发页面中一个特定的监听方法。
在实现分页页面跳转的四个组件里,都声明为同一个listener监听方法。请看相应java中的对应监听方法changePage的代码:
public void changePage(IRequestCycle cycle) {
//Tapestry4.0已经deprecated了cycle.getListenerParameters()
Object[] parameters = cycle.getServiceParameters();
//获取当前页码
Integer ig1 = (Integer) parameters[0];
int i1 = ig1.intValue();
setPageNo(i1);
//获取每页最大显示数目
Integer ig2 = (Integer) parameters[1];
int i2 = ig2.intValue();
setMaxResult(i2);
}
对于DirectLink,parameters参数的赋值方式于ExternalLink一样。这里获取的是一个数组,这个数组包含了两样信息:即将跳转的页码数,以及即将跳转的页面显示多少条数据。
在前面,我们提到过,页面的java文件在完成页面表现所需数据的处理后,应该将其所有成员变量(页面property)还原为初始值。所以,“当前页码” 以及“每页最大显示数据”这两个数据,我们将它们“保存”在页面上。当点击触发监听方法后,再由页面来提供下一个页面的“页码”和“每页最大显示数目”。然后再查询新的maxResult条数据。
运行效果图如下:
ExternalLink组件
ExternalLink组件使用的是Tapestry的9种service中的external service。该组件使用External Service 创建继承了IExternalPage接口的一个链接。下面用一个例子说明它的用法。
<a jwcid="@ExternalLink" page="SuccessPage" parameters='ognl:new java.lang.Object[]{"This is Success Page!", item.id}'disabled="ognl:item.Isable"></a>
page="SuccessPage"这个参数的作用,就是指定了将要跳转的页面名称,ExternalLink组件的page参数根据配置文件tapestry.application文件中的配置找到对应的page文件:
<page name="SuccessPage" specification-path="/WEBINF/SuccessPage.page"/>
然后在SuccessPage.page文件中,根据:
<page-specification class="com.ce.tapestry.Success">
找到对应的Success.java文件。在Success.java文件中,我们发现该类继承了IExternalPage接口:
public abstract class Success implements IExternalPage
以及实现了activateExternalPage(Object[],IRequestCycle)方法。
对于ExternalLink组件,它必须继承IExternalPage接口,并实现public void activateExternalPage(Object[] parameters,IRequestCycle cycle)方法。该方法的参数Object[]来自该组件的parameters参数的值。 disabled参数默认为false,当为true时,不能被“点击”。
GenericLink组件
组件GenericLink通常用于跳转到应用程序范围以外的链接。 虽然GenericLink可以用其他组件也能完成,但是GenericLink更灵活:它可以设置为disabled,象DirectLink或者ActionLink一样也能包含Rollover组件。
使用方法如下:
<a jwcid="@GenericLink" href="ognl:item.homepage" disabled="false"/>
Href参数:其作用很明显,就是提供一个链接地址。从上例可知:从item.homepage取出地址。
disabled参数:该参数默认为false,当为true时,不能被“点击”。关于disabled参数,所有link类组件都有,作用均相同。
PageLink组件
PageLink组件非常简单,只需要在page参数中指明需要跳转到下一个页面的名字。相当于不带参数的ExternalLink。不过需要注意的是,PageLink和ExternalLink使用的不是同一个service,该组件使用了Page Service创建了另外一个链接URL。
使用方法请见例子:
<a jwcid="@PageLink" page="Infos"><img src="images/lyb.gif" width="50" height="18" border="0">
</a>
跳转到以下的URL:http://localhost:8080/hello/helloworld?service=page/Upload
ServiceLink组件
创建任意不带有参数的引擎服务,ServiceLink组件用法与ActionLink,PageLink和DirectLink等组件相似,但常常与具体的应用服务一起使用。Service参数是要调用的EngineService对象的名称。(Body)
以上的Link类组件,都需要在Body组件范围内使用。
contrib:PopupLink 组件
Html 模板代码:
<h1> PopopLink组件: </h1><p>
作用:弹出一个自定义的窗口,相当于一个 Script语名:
<br> window.open(URL, windowName, windowFeatures) <br>
1.必须在Body组件内使用。 <br>
2.注意href参数它会产生一个地址“/context/href参数值”
<p> <span jwcid = "@contrib:PopupLink" href = "/WEB-INF/Home.html" features = 'ognl:"resizable,scrollbars,top=100,left=100,height=400,width=300"' > PopupLink到主页 </span>
发表评论
-
自由组织Tapestry页面规范文件
2008-02-21 13:46 1070问题的提出: 默认Tapestry的页面模板文件(.html ... -
page specification寻找路径
2008-02-20 18:34 1263Tapestry4的机制是先找page模板,然后根据page模 ... -
Page对象池参数设置
2008-02-19 15:17 1216The internal pooling of Tapestr ... -
Tapestry简单的ajax实现
2008-02-19 15:15 2101Tapestry4.1.x中内置dojo实现ajax功能,不用 ... -
Tapestry页面属性持久化策略
2008-02-19 14:12 1119tapestry.persist.xml <con ... -
两个特殊的组件:content和remove
2008-02-19 11:27 982在tapestry中,有两个特殊的组件:remove和cont ... -
引用多个样式表的方法
2008-02-19 11:10 754<html jwcid="@Shell&quo ... -
转换器
2008-02-15 13:33 913表单中的元素的值都是字符串,在tapestry中,需要将这些值 ... -
基本组件的使用
2008-02-15 11:56 8731.combo box组件 .page文件: <comp ... -
页面属性
2008-02-15 09:50 897当在页面类中定义了抽象的getter方法时,在页面规范文件中( ... -
默认前缀
2008-02-14 18:31 962在模板文件中(.html),默认的前缀是literal,例如: ... -
解决tapestry中由于使用对象池而造成信息泄露的问题
2008-02-14 17:36 1215在tapestry中,由于每个页面都需要使用一个页面对象,为了 ... -
基础设施对象Infrastructure
2008-02-14 17:13 8401.获取应用程序的虚拟目录名称 String contex ... -
页面跳转汇总
2008-02-14 16:43 10351.表单提交后的页面跳转 表单提交后的页面跳转有三种方法: ... -
Tapestry与Spring和hibernate的集成
2008-01-24 10:21 1503Tapestry4.1与Spring的集成只能通过Hivemi ... -
page规范文件的使用
2008-01-09 15:19 1042一、asset的使用 资源在类路径下: <asset n ... -
国际化与本地化
2008-01-08 14:09 866页面使用: <span jwcid="@Ins ... -
编码问题
2008-01-08 14:06 812在应用程序配置文件中配置 <meta key=" ... -
页面校验
2008-01-08 14:05 1314前台校验: 采用Tapestry提供的核心验证,页面调用的方法 ... -
URL redirect配置
2008-01-08 14:04 1836web.xml中配置: <filter> < ...
相关推荐
QMAction 是一个在 iOS 开发中用于实现页面跳转的组件,由 GitHub 用户 fingerplay 开发并维护。这个组件提供了一种简洁的方式来处理应用程序内的页面导航,尤其适用于那些需要快速跳转或者弹出模态视图的情况。通过...
例如,可以创建一个`Route`组件来处理页面跳转和参数传递: ```qml Component { id: routeComponent Route { path: "path/to/page" component: Page3.qml } } // 使用 var route = routeComponent....
在React Native组件中,你可以使用`Actions`对象来触发页面跳转。假设你在`Home`页面中有一个按钮,点击后跳转到`Detail`页面: ```jsx import { Actions } from 'react-native-router-flux'; // 在按钮的onClick...
本实例主要关注的是“页面跳转”和“权限判断”两个关键知识点。 1. **页面跳转**: 页面跳转在Web应用中是相当常见的操作,它允许用户在不同的页面之间导航。在ASP.NET MVC框架中,有多种实现页面跳转的方式。一...
在Android应用开发中,页面跳转是用户交互中不可或缺的一部分,它使得用户能够在不同的Activity之间进行切换,体验应用的不同功能。本教程将详细介绍如何在Android中实现单击事件触发的页面跳转。 首先,我们需要...
自定义tabbar底部导航栏,简洁,方便,二开 使用教程 将组件拷贝到uni_modules目录内,然后其他页面进行引用即可 <TC-tabBar :zhi="zhi"></TC-tabBar> </template>
在Android应用开发中,页面跳转...随着学习深入,你还将了解到更复杂的页面导航策略,如Fragment的使用、Navigation组件的集成以及MVVM架构下页面跳转的最佳实践。不断实践和探索,你将在Android开发的道路上越走越远。
本文将深入探讨“Android Intent”在页面跳转和数据传递中的应用,结合“Chapter06_Intent_01”示例进行详细解析。 一、Intent的基本概念 Intent是一个消息对象,它表达了应用的意图,告诉系统想要执行的操作。...
在"Struts2简单的页面跳转示例"中,我们通常会有一个Action类,这个类需要继承自Struts2提供的ActionSupport类或者自定义一个基类。Action类中的方法对应用户请求的URL,当用户发起请求时,Struts2框架会根据配置...
例如,组件之间可以通过参数和事件进行通信,`TodoService`类可能负责与后端服务交互,`LocalStorage`服务则用来存储用户的数据。 总的来说,学习“Blazor页面组件示例”将涵盖前端开发的多个方面,包括组件化编程...
2. **添加子组件**:通过动态添加子组件来实现页面跳转。 ```as3 tabNav.tabs = [new mx.controls.Tab(label="Tab1", selectedChild="view1"), new mx.controls.Tab(label="Tab2", selectedChild="view2")]; ``` ...
本教程将详细解释如何使用QT来实现从登录页面到主页面的跳转。 首先,我们需要理解QT中的基本组件。在登录页面,通常会包含用户名输入框(`QLineEdit`)、密码输入框(通常为`QLineEdit`,但设置为密码模式以隐藏...
本项目"小程序demo简单的页面跳转"旨在演示如何在微信小程序中实现各种页面间的导航,包括tabs(标签页)切换、轮播图操作以及日期选择组件的使用。以下将详细介绍这些知识点。 1. **页面跳转**: 微信小程序中的...
页面跳转在Android中通常通过Intent对象来实现。例如,当用户点击注册按钮,Intent可以启动一个新的Activity,展示注册页面。同样,登录成功后,Intent可以将用户重定向到主应用界面。此外,使用Android的Fragment...
在Struts1.3中,页面跳转是常见的需求,它涉及到Action类、配置文件(struts-config.xml)以及JSP页面间的交互。本篇文章将深入探讨Struts1.3中的页面跳转机制及其相关知识点。 首先,页面跳转在Struts1.3中有两种...
在安卓应用开发中,用户体验是至关重要的一个环节,而页面跳转动画则能极大地提升用户对应用的感知和满意度。本文将深入探讨安卓页面跳转动画的实现原理、常用技术以及如何自定义动画效果。 首先,我们要理解...
在"大客户端控制小客户端页面跳转"的应用中,大客户端作为WebSocket的发送端,向服务器发送特定的控制指令,例如"jump"命令。这个命令包含目标URL,表明需要小客户端跳转到的页面(如百度)。服务器接收到这个命令后...
在Android开发中,页面跳转是应用程序中非常基础且重要的功能。它允许用户在不同的界面之间自由切换,实现各种交互。本教程将详细介绍如何在Android中实现初级的页面跳转功能,以帮助初学者理解这一核心概念。 首先...
本知识点主要关注如何使用Swift开发一个iOS页面跳转组件,通过URL路由到相关页面,并且可以自定义路由表。 首先,理解URL路由的概念。URL路由是一种通过URL地址来控制应用内部页面跳转的技术,常用于单页应用(SPA...
在Android开发中,页面跳转动画效果是提升用户体验的重要手段之一。"页面跳转动画效果"通常指的是在Activity之间切换时应用的动画,这可以使应用的交互更具视觉吸引力。"左入,右入,左出,右出"描述了四种基本的...