`
balaschen
  • 浏览: 190359 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

给struts2添加rails的layout功能

    博客分类:
  • MVC
阅读更多
struts2如果想实现类似rails的layout布局功能,必须借助sitemesh之类的第三方框架,sitemesh实现的思路是采用filter拦截和html内容解析,优点是通用,但我认为有个致命的缺点就是layout页面是运行在单独的上下文中。本文介绍的思路是采用类似rails的layout的实现思路,layout页面和内容页面共享相同的上下文,也就是可以在layout页面使用struts2的标签,并使用约定优于配置的思路,实现layout功能的零配置。使用步骤如下:
1、修改struts.xml,注册layout的resut:
struts.xml
xml 代码
 
  1. <struts>  
  2.     <bean class="com.comwave.core.struts2.view.Yield" static="true" />  
  3.     <bean class="com.comwave.core.struts2.view.LayoutResult" static="true" />  
  4.       
  5.     <package name="default" extends="struts-default">  
  6.         <result-types>  
  7.             <result-type name="layout" class="com.comwave.core.struts2.view.LayoutResult" default="false"/>  
  8.         <!---->result-types>  
  9.     <!---->package>  
  10.       
  11.       
  12. <!---->struts>  


2、接下来就和平常一样,创建action、jsp,配置struts2的action,result type为layout:
struts.xml action配置实例
 
  1. <package name="example" extends="default" namespace="/example">  
  2.         <action name="example" class="example.action.Example">  
  3.             <result name="success" type="layout">example.jsp<!---->result>  
  4.         <!---->action>  
  5.     <!---->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 代码
 
  1. <action name="viewUser" class="com.comwave.action.ViewUser">  
  2.             <result name="success" type="layout">  
  3.                 <param name="location">/layout/viewUser1.jsp<!---->param>  
  4.                 <param name="use_layout">false<!---->param>  
  5.             <!---->result>  
  6.         <!---->action>  
 
 使用指定的layout页面,可以这样:
xml 代码
 
  1. <action name="viewUser" class="com.comwave.action.ViewUser">  
  2.             <result name="success" type="layout">  
  3.                 <param name="location">/layout/viewUser1.jsp<!---->param>  
  4.                 <param name="layout">/layout.jsp<!---->param>  
  5.             <!---->result>  
  6.         <!---->action>  

还可以更简洁一点:
xml 代码
 
  1. <action name="viewUser1" class="com.comwave.action.ViewUser">  
  2.             <result name="success" type="layout">/layout/viewUser1.jsp?layout=/layout.jsp<!---->result>  
  3.         <!---->action>  
分享到:
评论
4 楼 dinghy 2008-10-15  
研究一下先...
3 楼 balaschen 2007-11-19  
robbin 写道
我觉得你还不如直接用sitemesh,和struts2.0集成性也很好

sitemesh,的layout页面,没办法用action的valueStack,比如,页面的整体布局有一个侧栏菜单,所有的页面都一样,但当前action的菜单加亮或无链接,咋整?sitemesh需要在每个action的页面包含侧栏菜单的定义,再用<content>。。</content>之类的标签包起来,重复啊!,如果layout页面能享受action的上下文,直接再layout页面定义就好了,消除了重复
2 楼 robbin 2007-11-13  
我觉得你还不如直接用sitemesh,和struts2.0集成性也很好
1 楼 qiaoqianghappy 2007-11-13  
   struts2 。。。。。。 我到是简单的会用但是 你说:Rails 是啥我怎么不知道啊我的经验有限

相关推荐

    Struts2和Rails的国际化实现

    NULL 博文链接:https://icekiller110.iteye.com/blog/936393

    rails_layout, 为各种前端框架生成 Rails 应用程序布局文件.zip

    rails_layout, 为各种前端框架生成 Rails 应用程序布局文件 RailsLayout gem使用这里 gem 可以设置你选择的前端框架的布局文件:Zurb基础 5.3Bootstrap 4.0Bootstrap 3.3它还将为 Bootstrap 或者基础设置设计视图。...

    Struts2-rest插件(有注释)

    很明显,Struts 2 的 Convention 插件借鉴了 Rails 的创意,甚至连插件的名称都借鉴了“约定优于配置”原则。 由于 Struts 2 的 Convention 插件的主要特点是“约定优于配置”,当我们已经习惯了 Struts 2 的基本...

    rails2-sample

    rails2-sample good book

    Ruby-DocumentationRails引擎提供文档添加到Rails应用程序的功能

    Documentation - Rails引擎提供文档添加到Rails应用程序的功能

    Ruby on Rails Guides v2 - Ruby on Rails 4.2.5

    Ruby on Rails Guides v2 - Ruby on Rails 4.2.5

    RestFul整合struts所需包

    Struts 2 依然是一个 MVC 框架,最初设计 Struts 2 时并没有按 REST 架构进行设计,因此 Struts 2 本质上并不是一个 REST 框架。由于 Struts 2 提供了良好的可扩展性,因此允许通过 REST 插件将其扩展成支持 REST 的...

    使用Struts2开发RESTful服务

    另外,Struts2.1还提供了REST插件,使Struts2可以支持Rails风格的URL,以对外提供REST风格的资源服务。本文作者通过代码示例演示了这些特性。REST简介REST是英文RepresentationalStateTransfer的缩写

    Rails.Angular.Postgres.and.Bootstrap.2nd.Edition

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

    select2-rails:将Select2 javascript库与Rails资产管道集成

    将select2-rails添加到您的Gemfile并运行bundle install : gem "select2-rails" 包括select2-rails JavaScript资源 将以下内容添加到您的app/assets/javascripts/application.js : //= require select2 要添加...

    rails 2.3.2离线安装rails 2.3.2离线安装

    rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails ...

    Rails里给文件上传添加progress_bar

    css和图片 博文链接:https://hideto.iteye.com/blog/197517

    Rails之道,完整扫描版

    《Rails之道》详细讨论了Rails的程序代码并通过分析Rails中的代码片段来深入解释它的功能,同时,《Rails之道》部分章节也摘录了一些API文档中的内容,使读者能够快速地找到对应的API文档、相关的示例代码以及深入...

    Ruby on Rails Tutorial

    《Ruby on Rails Tutorial》中文版(原书第2版,涵盖 Rails 4) Ruby 是一门很美的计算机语言,其设计原则就是“让编程人员快乐”。David Heinemeier Hansson 就是看重了这一点,才在开发 Rails 框架时选择了 Ruby...

    adminlte-rails, AdminLTE Rails gem 将AdminLTE主题与 Rails 资产管道集成.zip

    adminlte-rails, AdminLTE Rails gem 将AdminLTE主题与 Rails 资产管道集成 AdminLTE Rails gem AdminLTE 是后端的高级 Bootstrap 主题。英镑 AdminLTE Rails gem 与 Rails 资产管道集成了英镑AdminLTE主题。安装将...

    arturo, 用于 Rails的功能滑块.zip

    arturo, 用于 Rails的功能滑块 什么Arturo为 Rails 提供功能滑块。 它可以让你像特性一样打开和关闭特性,但提供更精细的粒度控制。 它支持在你的用户和白名单以及基于你可以在中表达的任何标准的情况下,仅为给定的...

    [Rails] Crafting Rails Applications (英文版)

    [Pragmatic Bookshelf] Crafting Rails Applications Expert Practices for Everyday Rails Development (E-Book) ☆ 图书概要:☆ Rails 3 is a huge step forward. You can now easily extend the framework, ...

    Ruby for Rails

    所采用的Rails应用示例,既说明了Ruby的特性,也给出了有关Rails的重要信息。第四部分讲述了如何应用第二部分和第三部分的Ruby知识来开发Rails应用。 本书适合于Ruby的初学者,也适合于想要进一步提高Ruby编程...

    Ruby-Draper将面向对象的表示逻辑层添加到您的Rails应用程序

    Draper - 将面向对象的表示逻辑层添加到您的Rails应用程序

Global site tag (gtag.js) - Google Analytics