MVC框架-mentawai(5)
来源:互联网 发布:ant编译java 编辑:程序博客网 时间:2024/05/24 01:26
Action 结果
每个Mentawai action都会返回一个字符串结果,用于应用管理器(application manager)建立一个对应的结果。例如,你可能允许一个action产生两种结果:一种是通过jsp模板产生的HTML,另一种是通过Ajax渲染的json形式的Ajax请求。action并不关心它的输出(output)是如何展示到显示层,它只是检查客户端的HTTP请求头并返回响应的结果。
如果不想每个action都做检查,不如添加一个全局的过滤器
转发结果
@Overridepublic void loadAction() { action("/Hello", HelloAction.class, "hi") .on(SUCCESS, fwd("/jsp/hello.jsp")); }
重定向结果
// 重定向到 http://www.myapp.com/MYCONTEXT/congrats.jsp?param1=blah¶m2=foo.on(SUCCESS, redir("/congrats.jsp")); // 重定向到 http://www.myapp.com/MYCONTEXT/Book.show.mtw?param1=blah¶m2=foo.on(SUCCESS, redir("/Book.show.mtw")); //会带有上下文和任意的action输出值 // 重定向到来自action的动态URL,也可以追加任意输出参数.on(SUCCESS, redir()); // url由action动态产生// action必须:output.setValue(Redirect.REDIRURL_PARAM, theUrlToRedir);// 或简写为:redir(theUrlToRedir);// 如果输出带有参数// 如果没有添加就不会带有参数output.setValue("param1", "blah");output.setValue("param2", "foo");// 重定向到 http://www.myapp.com/congrats.jsp.on(SUCCESS, redir("//congrats.jsp")); // 不带上下文(很少使用)
你也可以重定向到一个action配置,Mentawai将会从ActionConfig对象中获取URL
ActionConfig helloAction = action("/Hello", HelloAction.class, "hi") .on(SUCESS, redir("/jsp.hello.jsp"));action(UserAction.class, "add") // 与此行代码相同 action("/User", UserAction.class, "add") .on(SUCCESS, redir(helloAction)); // <=== 将会产生重定向 http://www.mysite.com/MYCONTEXT/User.add.mtw
流 结果
你可以返回一个图片或一个二进制文件
// in the action:public class ImageAction extends BaseAction { public String send() { byte[] image = getImageBytesSomehow(); output.setValue(StreamConsequence.STREAM, image); output.setValue(StreamConsequence.CONTENT_LENGTH_KEY, image.length); // 或简写为 stream(image, image.length); return SUCCESS; } }// 应用管理器写法:.on(SUCCESS, stream("image/jpg"));
从输入流中获取文件,你可以如下操作:
// 在action中:public class PDFAction extends BaseAction { public String execute() { FileInputStream fis = new FileInputStream("review.pdf"); // FileInputStream在响应中不设置大小 output.setValue(StreamConsequence.STREAM, fis); output.setValue(StreamConsequence.FILENAME, "review.pdf"); // 或者简写为: stream(fis, "review.pdf"); return SUCCESS; } } // 在应用管理器中:.on(SUCCESS, stream("application/pdf"));
Ajax结果
Ajax非常重要,会在单独的章节中进行讲解,下面是基本用法:
// 在action中:public class TestAction extends BaseAction { public String autoCompleter() { String sourceInput = input.getStringValue("sourceInput"); Map<Integer, String> map = new LinkedHashMap<Integer, String>(); if(sourceInput.startsWith("a")) { map.put(1, "a. Somebody with id 1"); map.put(2, "a. Somebody with id 2"); map.put(3, "a. Somebody with id 3"); } else if(sourceInput.startsWith("b")) { map.put(4, "b. Somebody with id 4"); map.put(5, "b. Somebody with id 5"); map.put(6, "b. Somebody with id 6"); } else { map.put(7, "*. Somebody with id 7"); map.put(8, "*. Somebody with id 8"); map.put(9, "*. Somebody with id 9"); } ajax(map); return SUCCESS; } } // 在应用管理器中:.on(SUCCESS, ajax()); // 默认的Ajax结果将会将map渲染为JSON
设置全局结果
你也可以设置一个检查所有action的结果,这对于一个全局过滤器产生一个应用在全局水平的结果很有帮助。
@Overridepublic void loadFilters() { filter(new AuthenticationFilter()); // 一个全局授权过滤器 on(LOGIN, redir("/jsp/login.jsp")); //一个全局结果}
阅读全文
0 0
- MVC框架-mentawai(5)
- MVC框架-Mentawai(1)
- MVC框架-Mentawai(2)
- MVC框架-Mentawai(3)
- MVC框架-mentawai(4)
- MVC框架-mentawai(6)
- MVC框架-mentawai(7)
- MVC框架-mentawai(8)
- MVC框架-mentawai(9)
- MVC框架-mentawai(10)
- MVC框架-mentawai(11)
- MVC框架-mentawai(12)
- MVC框架-mentawai(13)
- MVC框架(1)
- MVC模式(框架)
- MVC框架(二)
- MVC框架(二)
- 基于MVC模式的MVC 5框架
- Swift_系统宏判断(版本...)
- 实体类实现序列化的原因
- [bzoj3040]最短路 挖坑于此,以后写
- 生物信息学基础
- unity第一人称视角mouselook分析
- MVC框架-mentawai(5)
- 什么是用户token(令牌)-- 转
- iOS开发-记录下在开发过程中遇到的问题的解决方案及经验总结-1
- MapReduce 实现 join
- ECJIA到家短信插件开发
- string 、stringBuffer、stringBuilder之间的区别
- Java 异常处理机制
- 欢迎使用CSDN-markdown编辑器
- 单项链表查找、相交或成环的几个算法