`
alienj
  • 浏览: 78778 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

第12章 使用 Apache Wicket写你的持久化层

阅读更多

12 使用 Apache Wicket写你的持久化层

 

Seam 支持 Wicket当做一个可选的JSF持久化层。看一看在 Seam中的例子, 其展示了移植到WicketBooking 例子。

 

注意,Wicket支持对Seam而言是新的,所以,当你使用Wicket时,那些在JSF中可用的一些特色至今是不可用的(如:页面流)。你也会注意到,文档是非常JSF中心化的,并且需要改造,反射最初类支持Wicket

 

12.1.增加Seam 到你的wicket应用程序

 

特色增加到你的wicket应用程序,能被划分成两类:双向注入和安排。这些在后面详细讨论。

 

当构建wicket应用程序时,广泛的使用内部类是普遍的,用组件树在构造器中构建。Seam完全支持基于在内部类内和构造器内的控件(不象正规的Seam组件)注释的使用。

 

任何超类被调用后,注释被处理。这意味着,任何注入的属性在调用this() super()时不能被作为一个参数传递。

 

注意,我们正在着手这方面的改进。

 

当一个方法在一个内部类中被调用,对任何封装它的类,双向注入发生。这允许你设置你的双向注入变量在外部类,并且在任何内部类中引用它们。

 

12.1.1. 双向注入

 

一个Seam使Wicket应用程序可能完全访问所有的标准Seam上下文(EVENT,

CONVERSATION, SESSION, APPLICATION BUSINESS_PROCESS)

 

Wicket访问Seam组件,你只需要使用@In注入它:

 

@In(create=true)

private HotelBooking hotelBooking;

 

技巧:当你的Wicket类不完全是一个Seam组件时,不需要使用@Name注释它。

 

你也能从一个Wicket组件“注出”一个对象进到Seam上下文:

 

@Out(scope=ScopeType.EVENT, required=false)

private String verify;

 

TODO 进行更多和这种“用例驱动”

 

12.1.2.安排

 

你通过使用@Restrict注释,能够保护一个Wicket组件。这个能设置在外部组件或者任何内部组件。如果@Restrict被指定,组件会自动约束注册用户。你能随意地在值属性中使用EL表达式指定一个被应用的约束。对更多情况,请参考15章,安全。

 

例如:

@Restrict

public class Main extends WebPage {

   ...

 

技巧:Seam 会自动对任何嵌套的类应用约束。

 

TODO – 实现这个 ( JBSEAM-3192)

 

通过使用@Begin@End,在一个Wicket内组件你能区分对话。这些注释使用,在语法上,是和在一个Seam组件中用法是一样的。你能在任何方法上设置@Begin @End

 

注意:“反对的” ifOutcome属性是不被支持。

 

例如:

 

item.add(new Link("viewHotel") {

   @Override

   @Begin

   public void onClick() {

      hotelBooking.selectHotel(hotel);

      setResponsePage(org.jboss.seam.example.wicket.Hotel.class);

   }

};

 

如果你想进一步分离你的应用程序的类,你能使用Seam事件。当然,你能使用Events.instance().raiseEvent("foo")触发一个事件。做为选择,你能注释一个方法@RaiseEvent("foo");如果事件返回一个没有异常的非空结果,事件会被触发。

 

通过@CreateProcess,@ResumeTask, @BeginTask, @EndTask, @StartTask and @Transition,你也能够控制在Wicket中的任务和过程。

 

TODO – 实现 BPM 控制 - JBSEAM-3194

 

12.2. 设置你的项目

 

Wicket里,你必须放置你的类在WEB-INF/wicket中,才能通过注释让双向注入可用和进行安排控制。Seam需要你的Wicket类的字节码工具能解释你使用的注释。

 

注意: 通常只有使用一个自定义类加载器的字节码工具被支持,它读取在WEB-INF/wicket 中的类。当项目结果被构建时,用一个Ant 任务或Maven 插件可以开发来支持字节码工具。

 

12.2.1. 定义应用程序

 

一个使用Seam Wicket网页应用程序,使用SeamWebApplication作为基础类;这个创作物接入Wicket生命周期,当需要的时候允许Seam自动传播对话。它也增加状态消息到页面。

 

例如:

SeamAuthorizationStrategy传播授权到Seam安全, 允许在Wicket 组件上使用@RestrictSeamWebApplication 为你安装授权策略。你能通过实现getLoginPage()方法指定注册页面。 你也需要通过实现getHomePage()方法设置应用程序主页。

 

public class WicketBookingApplication extends SeamWebApplication {

   @Override

   public Class getHomePage() {

      return Home.class;

   }

   @Override

   protected Class getLoginPage() {

      return Home.class;

   }

  

}

 

Seam自动为你安装Wicket 过滤器filter (确保它为你插入到正确的地方)。但是你仍然需要告诉Wicket使用那一个类:

 

<components xmlns="http://jboss.com/products/seam/components"

   xmlns:wicket="http://jboss.com/products/seam/wicket">

        

      <wicket:web-application  application-

class="org.jboss.seam.example.wicket.WicketBookingApplication" />

</components>

 

技巧:关于更多的授权策略和你能覆盖的有关应用程序类的其它方法,请看一下Wicket文档。

 

[Apache Wicket – Home   http://wicket.apache.org/]

分享到:
评论

相关推荐

    Apache Wicket Cookbook

    《Apache Wicket Cookbook》分为多个章节,每章针对特定主题,通过示例演示如何使用Wicket进行开发。主要包含以下方面: - **基础篇**:介绍Wicket的基本概念和安装配置方法,包括开发环境搭建、第一个Wicket应用的...

    apache-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 ...

    apache wicket cookbook

    《Apache Wicket Cookbook》是一本专注于Apache Wicket框架的实用指南,它包含了12个章节的最新内容,旨在帮助开发者高效地掌握并运用这个强大的Java Web应用开发框架。Apache Wicket是一个模型-视图-控制器(MVC)...

    apache-wicket-7

    Apache Wicket 是一个开源的Java Web应用程序框架,它专注于提供简单、声明式、以及组件化的Web开发模型。在“apache-wicket-7”这个主题中,我们主要关注的是Wicket框架的第七个主要版本,即7.0.0-M3。这个版本是一...

    apacke-wicket-mvn编译

    【标题】:“apacke-wicket-mvn编译”指的是使用Apache Maven构建工具来编译一个基于Apache Wicket的项目。Apache Wicket是一款开源的Java Web应用框架,它以组件为基础,提供了丰富的功能来帮助开发者创建动态、...

    apache-wicket-1.3.0.zip_wicket

    Apache Wicket 是一个开源的Java Web应用程序框架,它专注于提供组件化的、声明式的编程模型,以简化Web开发。Wicket 1.3.0 版本是该框架的一个早期版本,尽管相对较旧,但仍然包含了许多核心特性,有助于开发者构建...

    wicket-sample:示例 Apache Wicket Web 应用程序,用于使用 Apache Fortress 演示基本的 Java EE 安全性和 RBAC

    本文档演示了如何获取、构建和部署 Apache Fortress Wicket 示例应用程序。 要完成本教程,请首先按照本 README 中的步骤进行操作。 接下来是这里的步骤: 先决条件 Java 8++ Apache Maven 3++ Apache Tomcat ...

    apache-wicket-1.5.11.zip

    8. **依赖管理**:Wicket 1.5.11可能还需要其他第三方库的支持,如Servlet容器API、JSON解析库等,开发者需要确保正确配置和管理这些依赖关系。 9. **版本升级**:从Wicket 1.5.11来看,这是较早的版本,随着时间的...

    wicket相关书籍

    Apache Wicket 是一个开源的Java Web应用程序框架,它以其组件化的模型、强大的状态管理和低级别的浏览器依赖性而受到开发者的欢迎。Wicket 相关书籍是深入理解和掌握这个框架的重要资源,下面将针对这些书籍提供的...

    wicket国际化例子

    在本文中,我们将深入探讨Wicket框架中的国际化(i18n)实现,以及如何使用`wicket:message`和`StringResourceModel`等工具来读取`.properties`资源文件。Wicket是一个流行的Java web应用程序框架,它提供了强大的...

    wicket_mvn库

    Apache Wicket 是一个用于创建 Web 应用程序的开源 Java 框架,它采用模型-视图-控制器(MVC)架构模式,并且注重组件化和基于事件的编程。Maven 是一个项目管理和综合工具,可以帮助开发者管理项目依赖、构建过程和...

    Wicket 入门

    Wicket 强调简洁性、灵活性和可扩展性,它采用了组件化的设计思路,允许开发者使用类来表示页面和页面元素,这使得代码更加清晰、易于维护。 #### 二、在 Eclipse 中使用 Maven 创建 Wicket 项目 在实际操作中,...

    创建并扩展Apache_Wicket_Web应用.doc

    Apache Wicket 是一个基于组件的轻量级Web应用框架,其设计目的是使展现层与业务逻辑分离,便于创建可测试、可调试且支持性强的Web 2.0应用程序。本篇文档关注的是如何在不修改已有代码的情况下扩展一个基于Wicket的...

    wicket-presentation:Apache Wicket演示文稿的源代码-apache source code

    Apache Wicket是一个强大的Java Web应用程序框架,它遵循模型-视图-控制器(MVC)架构模式,用于构建用户界面。Wicket的核心理念是组件驱动,这意味着网页被分解为可重用、可管理的组件,每个组件都有自己的状态和...

Global site tag (gtag.js) - Google Analytics