`
chelsea
  • 浏览: 121694 次
  • 来自: ...
社区版块
存档分类
最新评论

ThrowawayObject :在Java中实现Rails里的Flash Message

    博客分类:
 
阅读更多


需求是表单提交后, 转到另外一个已经存在的页面, 并在页面上方的空白处显示一条醒目的消息, 而且只显示一次 (刷新后这条消息不应该再出现).

对 Web 开发相当不熟, Pair说这需求类似 RoR里的 flash message, 问Java里有没有. 我们用SpringMVC + Velocity, 看了看文档, 问了问人, 短时间没有得到确定方案.

那就试一试吧, 明知几乎不可能成功, 还是写下了下面的代码:

  1. model.put("flashMessage","I'mstupid");
  2. returnnewModelAndView(newRedirectView("anotherPage"),model);


果然不行, model无法跨Controller. 那就放在Session里? 以我有限的Web经验, 应该可以, 问题是何时把它从Session中清除?

这应该是一个概念: 你放一个东西到Session里, 但你只能获得一次, 下次它就不存在了.

用类来表示概念, 我们只需在生成对象时把自己加到Session里, 在提供的获取函数中把自己从Session中移除, 那么第二次你就得不到它了.

  1. importjavax.servlet.http.HttpSession;

  2. publicclassThrowawayObject{
  3. privateHttpSessionsession;
  4. privateStringattribute;
  5. privateObjectvalue;

  6. publicThrowawayObject(HttpSessionsession,Stringattribute,Objectvalue){
  7. this.session=session;
  8. this.attribute=attribute;
  9. this.value=value;
  10. session.setAttribute(attribute,this);
  11. }

  12. publicObjectgetValue(){
  13. session.removeAttribute(attribute);
  14. returnvalue;
  15. }
  16. }


在 Controller 里, 只需:

  1. newThrowawayObject(session,"flashMessage","I'mStupid");



在 View 里, 这里是 velocity 模板:

  1. #if($flashMessage)
  2. <scriptlanguage="javascript">
  3. showNotificationMsg("$flashMessage.value")
  4. </script>
  5. #end


那么在 Spring MVC中实现这类功能的标准做法是什么样的? 其它Java Web 框架呢?

分享到:
评论

相关推荐

    Rails上的API:使用Rails构建REST APIAPIs on Rails: Building REST APIs with Rails

    在本篇内容中,我们将深入探讨如何利用Ruby on Rails(简称Rails)这一强大的Web应用程序框架来构建可伸缩且易于维护的RESTful API。Rails以其简洁优雅的语法、高效的开发速度以及良好的社区支持而闻名,这使得它...

    SOA系列:开源框架Ruby on Rails

    Rails 的设计理念之一是减少开发过程中的冗余工作,使得开发者能够以更少的代码量完成更多的功能实现。 #### 二、Ruby on Rails 的特点 1. **代码简洁**:Rails 通过提供一系列约定优于配置的原则简化了开发流程,...

    基于Java的Rails3消息队列系统 Sidekiq.zip

    描述中提到的Sidekiq.zip可能包含了一个Sidekiq的源码版本或者是Java环境下的实现或适配器,比如一个Java的Sidekiq客户端库,用于在Java应用中与Rails中的Sidekiq服务进行通信。 在Java应用中使用Sidekiq,我们可能...

    Ruby on Rails教程:学习使用Rails进行Web开发Ruby on Rails Tutorial: Learn Web Development with Rails

    本书教您如何使用Ruby on Rails开发和部署真正的,具有工业实力的Web应用程序,Ruby on Rails是为诸如Twitter,Hulu,GitHub和Yellow Pages等顶级网站提供支持的开源Web框架。

    java基础之rails命令大全.pdf

    - `rake rails:update`: 更新应用程序中的 scripts 和 public/javascripts 文件夹,使之与当前 Rails 版本保持一致。 - `rake rails:update:javascripts`: 仅更新 javascripts 文件夹。 - `rake rails:update:...

    Rails3常用命令行命令

    在本文中,我们将深入探讨Rails3中的常用命令,帮助你更高效地进行开发工作。 首先,新建一个Rails项目是开发的起点。你可以使用以下命令创建一个新的工程: ```bash rails new 工程名 ``` 这会生成一个包含所有...

    rails-id.github.io:在| Ruby on Rails印度尼西亚主页

    Ruby on Rails印度尼西亚主页 该存储库是网站上内容的结果:地位一般说明不要忘记捆绑Gemfile资源: $ bundle install要构建源代码: $ jekyll build要查看源代码服务,请执行以下操作: $ jekyll serve您可以在耙上...

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

    [Michael Hartl] Ruby on Rails Tutorial

    Learn Web Development with Rails Clear EPUB version in English, Second Edition “The author is clearly an expert at the Ruby language and the Rails framework, but more than that, he is a working ...

    Rails 集成Open Flash Charts

    标题 "Rails 集成Open Flash Charts" 涉及的是在Ruby on Rails框架中集成Open Flash Chart这一图表库的技术细节。Open Flash Chart是一个开源的Flash图表生成器,它允许开发者通过简单的API创建各种复杂的图表,包括...

    java源码:Rails3消息队列系统 Sidekiq.zip

    java源码:Rails3消息队列系统 Sidekiq.zip

    QCon 2009 beijing全球企业开发大会ppt:14.让Ruby和Rails让Ruby语言融入于Java项目

    JRuby 是一种用 Java 实现的 Ruby 解释器,它允许 Ruby 代码在 Java 平台上运行,同时也支持 Ruby 代码调用 Java 库。JRuby 的出现使得 Ruby 与 Java 之间的界限变得模糊,为开发者提供了更多的选择和可能性。JRuby ...

    uri-js-rails:URI.js用于Rails资产管道

    Uri :: Js :: Rails Rails的 安装 将此行添加到您的应用程序的Gemfile中: gem 'uri-js-rails', :group =&gt; :assets 然后执行: $ bundle 或将其自己安装为: $ gem install uri-js-rails 用法 添加到您的...

    flash-message-conductor, 在 Ruby on Rails 应用程序中,用于管理 Flash 消息的简单 Pattern.zip

    flash-message-conductor, 在 Ruby on Rails 应用程序中,用于管理 Flash 消息的简单 Pattern Flash 消息导体用于在 Ruby on Rails 应用程序中管理 Flash 消息的简单 Pattern 。安装这个分支只用于 Rails 3 。 仍然...

    JRuby和Rails-让Ruby语言融入于Java项目.rar

    《JRuby和Rails-让Ruby语言融入于Java项目》是一本深入探讨如何在Java环境中使用JRuby和Rails框架的教程。这本书旨在帮助开发者理解和实践如何将Ruby on Rails的灵活性和生产力引入到Java企业级开发中,从而提升软件...

    Flexible Rails: Flex3 on Rails2

    ### Flexible Rails: Flex3 on Rails2 #### 关于Flexible Rails 本书《Flexible Rails: Flex 3 on Rails 2》由Peter Armstrong撰写,旨在探讨如何结合使用Flex 3和Rails 2来开发高效的富互联网应用程序(Rich ...

    client_variable:在JavaScript中使用Rails变量

    它将在配置文件夹中创建client_variable.yml,此文件中的这些变量将与通过控制器定义的变量合并,并导出到客户端 #### client_variable.yml development : app_name : &lt;&#37;= Rails . application . class . ...

    rails_turo_in_action:实际使用中的 Rails 教程

    《Rails实战教程:实际使用中的Rails》是一本深入探讨Ruby on Rails框架的实践指南,它旨在帮助开发者在真实的项目环境中熟练掌握Rails的核心概念和技术。Rails是Ruby编程语言的一个强大Web应用框架,以其“约定优于...

    mongoid_rails_migrations:Mongoid的数据迁移

    gem "mongoid_rails_migrations" 如何使用 创建迁移 $ rails generate mongoid:migration 运行迁移: $ rails db:migrate $ rails db:migrate:down VERSION= $ rails db:migrate:up VERSION= $ rails db:rollback...

Global site tag (gtag.js) - Google Analytics