struts2如果想实现类似rails的layout布局功能,必须借助sitemesh之类的第三方框架,sitemesh实现的思路是采用filter拦截和html内容解析,优点是通用,但我认为有个致命的缺点就是layout页面是运行在单独的上下文中。本文介绍的思路是采用类似rails的layout的实现思路,layout页面和内容页面共享相同的上下文,也就是可以在layout页面使用struts2的标签,并使用约定优于配置的思路,实现layout功能的零配置。使用步骤如下:
1、修改struts.xml,注册layout的resut:
struts.xml
xml 代码
- <struts>
- <bean class="com.comwave.core.struts2.view.Yield" static="true" />
- <bean class="com.comwave.core.struts2.view.LayoutResult" static="true" />
-
- <package name="default" extends="struts-default">
- <result-types>
- <result-type name="layout" class="com.comwave.core.struts2.view.LayoutResult" default="false"/>
- <!---->result-types>
- <!---->package>
-
-
- <!---->struts>
2、接下来就和平常一样,创建action、jsp,配置struts2的action,result type为layout:
struts.xml action配置实例
- <package name="example" extends="default" namespace="/example">
- <action name="example" class="example.action.Example">
- <result name="success" type="layout">example.jsp<!---->result>
- <!---->action>
- <!---->package>
3、在website根目录下建立layout目录,并在该目录下创建example.jsp,此文件将被作为缺省layout文件(命名规则:action的namespace+".jsp")
具体实现代码,见struts-layout.zip,sample见:struts-layout-example.zip
4、其他说明:
缺省使用layout功能,如果不想使用layout功能,可以增加参数use-layout=>“false”,如
xml 代码
- <action name="viewUser" class="com.comwave.action.ViewUser">
- <result name="success" type="layout">
- <param name="location">/layout/viewUser1.jsp<!---->param>
- <param name="use_layout">false<!---->param>
- <!---->result>
- <!---->action>
使用指定的layout页面,可以这样:
xml 代码
- <action name="viewUser" class="com.comwave.action.ViewUser">
- <result name="success" type="layout">
- <param name="location">/layout/viewUser1.jsp<!---->param>
- <param name="layout">/layout.jsp<!---->param>
- <!---->result>
- <!---->action>
还可以更简洁一点:
xml 代码
- <action name="viewUser1" class="com.comwave.action.ViewUser">
- <result name="success" type="layout">/layout/viewUser1.jsp?layout=/layout.jsp<!---->result>
- <!---->action>
分享到:
相关推荐
Struts2和Rails都是流行的Web开发框架,它们都提供了强大的功能来支持应用程序的国际化,使得开发者可以轻松地为不同语言的用户提供本地化体验。这里我们将深入探讨这两个框架的国际化实现。 **Struts2的国际化实现...
rails_layout, 为各种前端框架生成 Rails 应用程序布局文件 RailsLayout gem使用这里 gem 可以设置你选择的前端框架的布局文件:Zurb基础 5.3Bootstrap 4.0Bootstrap 3.3它还将为 Bootstrap 或者基础设置设计视图。...
很明显,Struts 2 的 Convention 插件借鉴了 Rails 的创意,甚至连插件的名称都借鉴了“约定优于配置”原则。 由于 Struts 2 的 Convention 插件的主要特点是“约定优于配置”,当我们已经习惯了 Struts 2 的基本...
在Ruby on Rails(Rails)框架中,为文件上传添加进度条功能可以显著提升用户体验,让用户在上传大文件时能够清楚地看到进度,增加交互性。本文将深入探讨如何在Rails应用中实现这一功能。 首先,我们需要理解文件...
从给定的文件信息来看,我们正在探讨的是一本关于Ruby on Rails的书籍,书名为《Simply Rails2》,作者是Patrick Lenz。本书旨在为初学者提供深入理解Ruby on Rails框架的指南,从基础概念到高级主题均有涵盖,是...
**Rails 常用插件简介 - CRUD Generator 2** 在Ruby on Rails框架中,开发过程中经常需要创建、读取、更新和删除(CRUD)数据。为了提高开发效率,开发者通常会使用各种插件来自动化这个过程。CRUD Generator 2就是...
- **重要概念**:本指南旨在帮助读者深入理解Ruby on Rails(以下简称Rails)4.2.5版本的核心功能与最佳实践。 - **基础假设**:读者已经具备一定的Ruby编程基础,并对Web开发有一定的了解。 #### 二、什么是Rails...
- 在Group中添加Post功能。 - **实现过程**: - 创建Post模型。 - 实现关联关系。 - 创建PostsController控制器。 - 实现CRUD操作。 - **高级技巧**: - 使用before_action简化代码。 #### 十、练习作业3-为...
"Documentation - Rails引擎提供文档添加到Rails应用程序的功能"这一标题表明,我们将讨论如何利用Rails引擎为应用程序生成和管理文档。文档对于任何软件项目都至关重要,它能帮助开发者理解代码结构,快速熟悉项目...
综合来看,这两个项目分别展示了Web开发的两种不同技术栈:Ruby on Rails和Java Struts+Hibernate。它们都涉及到数据库操作、用户交互和业务逻辑处理,是Web开发中常见的实践。学习和分析这些项目可以帮助我们了解...
Struts 2 依然是一个 MVC 框架,最初设计 Struts 2 时并没有按 REST 架构进行设计,因此 Struts 2 本质上并不是一个 REST 框架。由于 Struts 2 提供了良好的可扩展性,因此允许通过 REST 插件将其扩展成支持 REST 的...
这个“Rails项目源代码”是一个使用Rails构建的图片分享网站的完整源代码,它揭示了如何利用Rails的强大功能来创建一个允许用户上传、分享和浏览图片的应用。 1. **Rails框架基础**: Rails的核心理念是DRY(Don't...
Embrace the full stack of web development, from styling with Bootstrap, building an interactive user interface with Angular 2, to storing data quickly and reliably in PostgreSQL. With this fully ...
本教程将详细介绍如何使用Aptana与Rails结合,创建一个功能完备的Web应用程序。 首先,我们需要安装Aptana Studio。你可以从其官方网站下载最新版本的安装包。安装过程中,遵循提示进行,确保选择自定义安装并勾选...
插件是 Rails 社区共享代码的一种方式,可以快速添加特定功能。 5. 测试框架:Rails 内置了测试支持,包括 Unit 测试、Functional 测试和Integration 测试,使用 RSpec 和 Test::Unit 等工具,确保代码的质量和可...
Cucumber-Rails集成了Cucumber与Rails,使得开发者能够在Rails环境中方便地使用Cucumber进行功能测试。 在 Rails 应用中使用 Cucumber-Rails,开发者可以创建一个名为`features`的目录,里面包含这些Gherkin特性...