`
somefuture
  • 浏览: 1089055 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Play!2.1 提示信息flash的使用

 
阅读更多

本文是在Play2.1下进行的,不过很可能也适合Play2的各个版本。

 

=======================================

play2.1的业务操作返回信息可以使用Ajax的结果由alert向用户展示。

如果需要这种方法,可以参考http://somefuture.iteye.com/blog/1983621

(请一定注意:这种方法仅仅适合于Play!2.1,其他版本几乎是不可能这样做的。)

我写了一个通用方法,可以进行增删改:

 

import java.util.concurrent.Callable;
import play.db.jpa.JPA;
import play.libs.F.Function;
import play.libs.F.Function0;
import play.libs.F.Promise;
import play.mvc.Result;
import play.mvc.Results;

public class AsyncTransanctionUtil{
	public static final Integer PERSIST = 1;
	public static final Integer MERGE = 2;
	public static final Integer REMOVE = 3;
	public static Result asyncResult(final Integer type, final Object object) {
		Promise<Boolean> promiseOfInt = play.libs.Akka
				.future(new Callable<Boolean>() {
					public Boolean call() {
							if (type == PERSIST) {
								try {
									JPA.withTransaction(new Function0<Void>() {
										@Override
										public Void apply() throws Throwable {
											JPA.em().persist(object);
											return null;
										}
									});
								} catch (Throwable e) {
									return false;
								}
							}else if (type == MERGE) {
								try {
									JPA.withTransaction(new Function0<Void>() {
										@Override
										public Void apply() throws Throwable {
											JPA.em().merge(object);
											return null;
										}
									});
								} catch (Throwable e) {
									return false;
								}
							}else if (type == REMOVE) {
								try {
									JPA.withTransaction(new Function0<Void>(){
										public Void apply() throws Throwable {
											Object obj = JPA.em().merge(object);
											JPA.em().remove(obj);
											return null;
										};
									});
								} catch (Throwable e) {
									return false;
								}
							}
							return true;
					}
				});
		return Results.async(promiseOfInt.map(new Function<Boolean, Result>() {
			public Result apply(Boolean result) {
				if (result) {
					return Results.ok("success");
				}else {
					return Results.badRequest("fail");
				}
			}
		}));
	}

}

 

==========================================以上是异步处理

Play还可以使用flash进行操作提示。

 业务处理结束后,通过一句即可

flash("success", "完成了,啊哈哈哈");

 比如:

@Transactional
	public static Result deletedp(Long sid, Long pid){
		Deployment deployment = (Deployment) JPA.em()
				.createQuery("from Deployment where sid=? and pid=?")
				.setParameter(1, sid).setParameter(2, pid).getResultList()
				.get(0);
//		return AsyncTransanctionUtil.asyncResult(AsyncTransanctionUtil.REMOVE, deployment);
		JPA.em().remove(deployment);
		flash("success", "呃,就这样吧,主公快走");
		return redirect("/index");
	}

 这样页面会收到flash信息。

因为flash信息是一种HTTP内容,保存进了cookie中:

package play.mvc;

import java.io.*;
...

/**
 * Defines HTTP standard objects.
 */
public class Http {
    ...
    /**
     * HTTP Flash.
     * <p>
     * Flash data are encoded into an HTTP cookie, and can only contain simple String values.
     */
    public static class Flash extends HashMap<String,String>{...}
    ...
}

 上面是Flash类的定义。

 

页面的获取方式很简单:

@if(flash.containsKey("success")){
	<div>
		@flash.get("success")
	</div>
}

 把想要展示的东西if出来就行。

 

======================存在的问题:

如果从该页面跳转后再返回来,由于不是重新请求,flash信息依然存在也会显示出来。

 

 

0
0
分享到:
评论
2 楼 somefuture 2014-05-04  
string2020 写道
flash作用域和servlet中的request作用域有什么不同
play框架是无状态的,它的实现都是依赖cookie的。
1 楼 string2020 2014-05-03  
flash作用域和servlet中的request作用域有什么不同

相关推荐

    play框架 2.1 api

    play框架 2.1 api

    Learning Play!Framework 2

    3. **项目初始化**:使用 `play new` 命令来创建一个新的 Play! 项目。 4. **配置文件**:通过编辑 `conf/application.conf` 文件可以设置项目的配置参数,如数据库连接等。 #### 四、核心概念与组件 1. **路由**...

    play framework api,play! framework api,play api

    在描述中提到的"play framework api,play! framework api,play api"都是指Play Framework的API文档,它包含了框架的所有公共类、方法和接口,供开发者在编写代码时查阅和引用。API文档是理解框架工作原理、学习如何...

    play!框架学习文档(汉化了一部分)

    ### 使用 Play! 的五大亮点 1. **HTTP 参数与 Java 方法参数绑定**:能够将 HTTP 请求中的参数直接绑定到 Java 方法参数上,支持各种类型的数据结构,极大地方便了参数传递。 2. **重定向通过 Java 方法实现**:...

    play!framework框架——japid源码

    **Play! Framework框架与Japid源码解析** 在软件开发领域,使用高效的框架可以极大地提升开发效率和代码质量。Play! Framework是一个流行的Java Web应用程序框架,它采用模型-视图-控制器(MVC)架构模式,支持敏捷...

    FlashPlay flash播放

    FlashPlay的使用涉及到以下几个关键技术点: 1. **ActiveX**:ActiveX是由微软开发的一种技术,允许不同应用程序之间的组件交互。在Internet Explorer中,ActiveX控件经常被用来增强浏览器的功能,如播放媒体、运行...

    Chrome谷歌 flash play 插件离线包

    需要注意的是,由于Adobe公司已经停止对Flash Player的支持,并且从2021年起不再提供安全更新,因此使用Flash Player可能存在安全风险。为了保护您的计算机安全,建议尽可能避免访问依赖Flash的网站,或者转向使用不...

    自由闪Flash播放器 Ver 2.1Bate-精品源代码

    《自由闪Flash播放器 Ver 2.1 Beta:精品源代码解析》 在信息技术领域,源代码是软件开发的核心,它揭示了程序背后的逻辑和结构。"自由闪Flash播放器 Ver 2.1 Beta" 是一款基于Visual Basic(VB)开发的Flash播放器...

    FlashPlay 21.0 flash播放器最新版20160524

    FlashPlay 21.0是2016年5月24日发布的最新版本的Flash播放器,这个软件主要用于在互联网上播放基于Adobe Flash技术创建的多媒体内容,包括动画、视频和互动应用。FlashPlayer在当时是网页浏览器上观看网络视频、玩...

    对play!的CRUD的一次改造

    对play!的CRUD 进行改造,改代码还会持续重构,并不完善。 1.将create,show,delete,list都改成@Util方法,可以类似 public static void show(String id){ MyCRUD.show(id); } 的方式调用。更通用。 2.增加@...

    Play Framework

    2.1 创建 Play 的工程 2.2 Play 常用指令 2.3 Play 应用的 JVM 调优 3. 如何读取静态资源 4. Play框架的配置文件 5. 使用 Play 框架开发 Java 应用 5.1 HTTP编程 5.1.1 什么是 Action? 5.1.2 什么是 Result ...

    flashplay播放器

    因为Adobe Flash Player在过去曾多次被发现存在安全漏洞,成为黑客攻击的目标,而使用Flashplay则可以避免这些潜在的安全问题。 7. **跨平台**:尽管此信息未直接提供,但通常这类播放器会支持Windows、Mac OS X...

    flash play卸载工具

    Flash Player是一款广泛使用的 Adobe 公司开发的多媒体播放器,它允许用户在浏览器上观看视频、玩在线游戏以及体验各种互动内容。然而,随着时间的推移,Adobe Flash Player 已经逐渐被淘汰,许多现代网站不再支持它...

    flashplay10

    标题“Flashplay10”指的是Adobe Flash Player的第10个主要版本,这是一个在互联网上广泛使用的多媒体软件插件,用于在网页浏览器中播放Flash内容,包括动画、视频和交互式应用程序。Flash Player 10是在2008年推出...

    自由闪Flash播放器 Ver2.1Beta的附件-精品源代码

    【自由闪Flash播放器 Ver2.1Beta的附件-精品源代码】是一个包含VB(Visual Basic)编程语言编写的源代码资源,它主要用于开发Flash播放器应用。这个压缩包提供了多个关键文件,让我们来深入探讨其中涉及的知识点。 ...

    GS Play v2.1 Free/Pro:播放laur87的广播电台流-开源

    GS Play v2.1 是一个由开发者 laur87 推出的开源无线电播放器,专为播放广播电台流而设计。这个应用以其简洁的用户界面和全面的播放功能著称,使得用户能够轻松地收听来自 laur87.ro 的广播电台内容。开源软件的特性...

Global site tag (gtag.js) - Google Analytics