`

页面跳转类组件

阅读更多
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>
分享到:
评论

相关推荐

    ios-页面跳转组件.zip

    QMAction 是一个在 iOS 开发中用于实现页面跳转的组件,由 GitHub 用户 fingerplay 开发并维护。这个组件提供了一种简洁的方式来处理应用程序内的页面导航,尤其适用于那些需要快速跳转或者弹出模态视图的情况。通过...

    qt-quick QML页面跳转

    例如,可以创建一个`Route`组件来处理页面跳转和参数传递: ```qml Component { id: routeComponent Route { path: "path/to/page" component: Page3.qml } } // 使用 var route = routeComponent....

    React_native Navigator页面跳转组件参数传递

    在React Native组件中,你可以使用`Actions`对象来触发页面跳转。假设你在`Home`页面中有一个按钮,点击后跳转到`Detail`页面: ```jsx import { Actions } from 'react-native-router-flux'; // 在按钮的onClick...

    mvc页面跳转实例

    本实例主要关注的是“页面跳转”和“权限判断”两个关键知识点。 1. **页面跳转**: 页面跳转在Web应用中是相当常见的操作,它允许用户在不同的页面之间导航。在ASP.NET MVC框架中,有多种实现页面跳转的方式。一...

    Android 单击实现页面跳转

    在Android应用开发中,页面跳转是用户交互中不可或缺的一部分,它使得用户能够在不同的Activity之间进行切换,体验应用的不同功能。本教程将详细介绍如何在Android中实现单击事件触发的页面跳转。 首先,我们需要...

    Uniapp 底部导航栏 自定义 tabBar 全端 全页面引用跳转 组件

    自定义tabbar底部导航栏,简洁,方便,二开 使用教程 将组件拷贝到uni_modules目录内,然后其他页面进行引用即可 &lt;TC-tabBar :zhi="zhi"&gt;&lt;/TC-tabBar&gt; &lt;/template&gt;

    Android中页面跳转

    在Android应用开发中,页面跳转...随着学习深入,你还将了解到更复杂的页面导航策略,如Fragment的使用、Navigation组件的集成以及MVVM架构下页面跳转的最佳实践。不断实践和探索,你将在Android开发的道路上越走越远。

    android intent 页面跳转

    本文将深入探讨“Android Intent”在页面跳转和数据传递中的应用,结合“Chapter06_Intent_01”示例进行详细解析。 一、Intent的基本概念 Intent是一个消息对象,它表达了应用的意图,告诉系统想要执行的操作。...

    Struts2简单的页面跳转示例

    在"Struts2简单的页面跳转示例"中,我们通常会有一个Action类,这个类需要继承自Struts2提供的ActionSupport类或者自定义一个基类。Action类中的方法对应用户请求的URL,当用户发起请求时,Struts2框架会根据配置...

    blazor页面组件示例

    例如,组件之间可以通过参数和事件进行通信,`TodoService`类可能负责与后端服务交互,`LocalStorage`服务则用来存储用户的数据。 总的来说,学习“Blazor页面组件示例”将涵盖前端开发的多个方面,包括组件化编程...

    Flex页面跳转.txt

    2. **添加子组件**:通过动态添加子组件来实现页面跳转。 ```as3 tabNav.tabs = [new mx.controls.Tab(label="Tab1", selectedChild="view1"), new mx.controls.Tab(label="Tab2", selectedChild="view2")]; ``` ...

    QT 实现登陆页面跳转到主页面源码

    本教程将详细解释如何使用QT来实现从登录页面到主页面的跳转。 首先,我们需要理解QT中的基本组件。在登录页面,通常会包含用户名输入框(`QLineEdit`)、密码输入框(通常为`QLineEdit`,但设置为密码模式以隐藏...

    小程序demo简单的页面跳转

    本项目"小程序demo简单的页面跳转"旨在演示如何在微信小程序中实现各种页面间的导航,包括tabs(标签页)切换、轮播图操作以及日期选择组件的使用。以下将详细介绍这些知识点。 1. **页面跳转**: 微信小程序中的...

    实现注册登陆的简单页面设计以及页面跳转

    页面跳转在Android中通常通过Intent对象来实现。例如,当用户点击注册按钮,Intent可以启动一个新的Activity,展示注册页面。同样,登录成功后,Intent可以将用户重定向到主应用界面。此外,使用Android的Fragment...

    struts1.3页面跳转问题

    在Struts1.3中,页面跳转是常见的需求,它涉及到Action类、配置文件(struts-config.xml)以及JSP页面间的交互。本篇文章将深入探讨Struts1.3中的页面跳转机制及其相关知识点。 首先,页面跳转在Struts1.3中有两种...

    安卓页面跳转动画

    在安卓应用开发中,用户体验是至关重要的一个环节,而页面跳转动画则能极大地提升用户对应用的感知和满意度。本文将深入探讨安卓页面跳转动画的实现原理、常用技术以及如何自定义动画效果。 首先,我们要理解...

    websocket连接两个页面,一个页面控制另外一个页面跳转。

    在"大客户端控制小客户端页面跳转"的应用中,大客户端作为WebSocket的发送端,向服务器发送特定的控制指令,例如"jump"命令。这个命令包含目标URL,表明需要小客户端跳转到的页面(如百度)。服务器接收到这个命令后...

    android初级页面跳转功能实现

    在Android开发中,页面跳转是应用程序中非常基础且重要的功能。它允许用户在不同的界面之间自由切换,实现各种交互。本教程将详细介绍如何在Android中实现初级的页面跳转功能,以帮助初学者理解这一核心概念。 首先...

    swift-iOS页面跳转组件-通过URL路由到相关页面可自定义路由表

    本知识点主要关注如何使用Swift开发一个iOS页面跳转组件,通过URL路由到相关页面,并且可以自定义路由表。 首先,理解URL路由的概念。URL路由是一种通过URL地址来控制应用内部页面跳转的技术,常用于单页应用(SPA...

    页面跳转动画效果

    在Android开发中,页面跳转动画效果是提升用户体验的重要手段之一。"页面跳转动画效果"通常指的是在Activity之间切换时应用的动画,这可以使应用的交互更具视觉吸引力。"左入,右入,左出,右出"描述了四种基本的...

Global site tag (gtag.js) - Google Analytics