Action写法心得
最近一段时间,一直在忙着做项目,这个项目的运用的是SSH2三大框架,页面是用dojo技术。
我之前对dojo有所了解,但是好长时间都在弄Flex和JSP写页面,dojo没有得到运用,导致有所生疏;另外,dojo中数据和数据库进行交互,都是JSON格式,即通过查询出来的数据格式符合JSON格式,因此Action的父包是继承json-default的。
昨天,我在做页面时,将@Action注解中的type="json"和location="/page/user.jsp"放在一起,导致页面在请求响应时无法返回结果。后来,在大神的帮助下,我彻底从中获得启发。
具体见下面:
错误做法:
@Component @Controller @ParentPackage("json-default") @Namespace("/page/user") public class UserAction extends BaseAction<Object> { private String stuNo; private String stuName; private UserService userService; private List<Line> chart = new ArrayList<Line>(); @Override @Action(value="stu",results={@Result(type="json",name="success")} public String execute() { List<User> list = new ArrayList<User>(); list = userService.getInfor(stuNo,stuName); return SUCCESS; } @Override @Action(value="stuChart",results={@Result(location="/page/user.jsp",name="success")} public String findStu() { //List<User> list = new ArrayList<User>(); chart = userService.getInfor(stuNo,stuName); return SUCCESS; } }
正确做法:
@Component @Controller @ParentPackage("json-default") @Namespace("/page/user") public class UserAction extends BaseAction<Object> { private String stuNo; private String stuName; protected UserService userService; @Override @Action(value="stu",results={@Result(type="json",name="success")} public String execute() { List<User> list = new ArrayList<User>(); list = userService.getInfor(stuNo,stuName); return SUCCESS; } }
@Component @Controller //@ParentPackage("json-default") @Namespace("/page/user") public class UserChartAction extends UserAction { private List<Line> chart = new ArrayList<Line>(); @Override @Action(value="stu",results={@Result(location="/page/user.jsp",name="success")} public String execute() { chart = userService.getInfor(stuNo,stuName); return SUCCESS; } }
正确的做法是不能将type="json"和location="/page/user.jsp"放在一起,必须将后者放在一个新的Action中,并且这个新Action是继承之前的那个Action,如果要用到之前的那个Action中的Service,需要将“private”改为“protected”。
通过这次教训,让我明白不是什么东西都按部就班照搬就行,模仿之前需要深刻地理解它们,知道它们在那里用,如何用的正确,这样才会将别人已有的经验变为自己的知识。
Action写法心得的更多相关文章
- struts2 + jquery 开发环境下的ajax构建方法(action写法 + struts.xml配置 + js调用代码)
1.action写法 public class RegisterAction extends ActionSupport { private InputStream inputStream; /** ...
- salesforce零基础学习(八十六)Ajax Toolkit (VF页面中使用及javascript action使用)
Ajax Toolkit 参考文档:https://resources.docs.salesforce.com/212/latest/en-us/sfdc/pdf/apex_ajax.pdf 在项目中 ...
- 在form action中滥用绝对路径导致session的attribute丢失(无法正常保存)
症状: 刚才在做一个利用session的attribute保存用户的id的实验,login.jsp输入用户id,提交给LoginServlet去数据库验证,然后LoginServlet根据验证情况跳转 ...
- 转载 - Struts2基于XML配置方式实现对action的所有方法进行输入校验
出处:http://www.cnblogs.com/Laupaul/archive/2012/03/15/2398360.html http://www.blogjava.net/focusJ/arc ...
- 两种github action 打包.Net Core 项目docker镜像推送到阿里云镜像仓库
两种github action 打包.Net Core 项目docker镜像推送到阿里云镜像仓库 1.GitHub Actions 是什么? 大家知道,持续集成由很多操作组成,比如抓取代码.运行测试. ...
- github action 实现CI/CD
两种github action 打包.Net Core 项目docker镜像推送到阿里云镜像仓库 1.GitHub Actions 是什么? 大家知道,持续集成由很多操作组成,比如抓取代码.运行测试. ...
- [转] android自定义布局中的平滑移动
无意中搜索到这篇文章,大概扫了一眼,知道是篇好文,先转载记录下来学习! 文章主要讲的是自定义view的写法心得. 转自:http://www.apkbus.com/android-48445-1-1. ...
- MVC 使用 Webuploader 插件 传递额外参数 备忘笔记
// 实例化 uploader = WebUploader.create({ pick: { id: '#filePicker-2', label: '点击选择图片' }, formData: { k ...
- 3.struts2接收页面传参的三种方式
Struts2通过拦截器机制封装了三种接收页面参数的方式: 1.属性驱动 2.模型驱动(有两种) Domain ModelDriven 1.属性驱动:这种方式比较简单,只要你直接在页面定义变量并且符合 ...
随机推荐
- 一个 div 手写红绿灯- 分别用css3 和 js 实现
[要求] 一个div,配合 css3 或者 js 实现红绿灯切换的效果. [思路] 使用 css3,要实现红绿灯颜色的变换必然要用到 animation 动画,通过 keyframes 控制颜色的渐变 ...
- 02_Python基本数据类型
一.什么是数据 数据是描述客观事物的字符(比如95,不同的语义可表示成绩或体重),是计算机可以操作的对象,能够被计算机识别并输入给计算机处理的符号集合. 数据不仅仅包含整形,还包括图像.音乐.视频等非 ...
- 精通libGDX-RPG开发实战
从今天开始,我会陆陆续续做一个五脏俱全的rpg小品游戏. 素材使用<圣剑英雄传II>的素材 游戏名称< Inspiration > 教程目录(暂定): Chapter 1: 开 ...
- java导入项目有红色叹号
原因:缺少jar包 解决: 选中项目 -> 右键 -> Build Path -> Configer Builder Path -> 删除掉有错的J ...
- 51Nod 欢乐手速场1 A Pinball[DP 线段树]
Pinball xfause (命题人) 基准时间限制:1 秒 空间限制:262144 KB 分值: 20 Pinball的游戏界面由m+2行.n列组成.第一行在顶端.一个球会从第一行的某一列出发 ...
- CF266D. BerDonalds [图的绝对中心]
D. BerDonalds time limit per test 5 seconds memory limit per test 256 megabytes input standard input ...
- Azure ARM (21) Azure订阅的两种管理模式
<Windows Azure Platform 系列文章目录> 熟悉Azure平台的读者都知道,Microsoft Azure服务管理,分为三个层次: 1.企业服务合同 (Enterpri ...
- Docker镜像管理
镜像是docker的三大核心概念之一.可以用来创建容器. Docker的镜像实际上由一层一层的文件系统组成,这种层级的文件系统被称为UnionFS.镜像可以基于Dockerfile构建,Dockerf ...
- 企业级docker仓库Harbor部署
1.安装环境下载离线安装包地址https://github.com/vmware/harbor/releases/yum install -y dockerpip install -i https:/ ...
- CSS3动画中的animation-timing-function效果演示
CSS3动画(animation)属性有如下几个: 属性 值 说明 animation-name name 指定元素要使用的keyframes名称 animation-duration time(ms ...