`
alienj
  • 浏览: 79827 次
  • 性别: 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。这个版本是一...

    Apache Wicket User Guide

    this guide is based on Wicket 6. However if you are using an older version you should find this guide useful as well, but it's likely that the code and the snippets won't work with your version.

    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