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.属性驱动:这种方式比较简单,只要你直接在页面定义变量并且符合 ...
随机推荐
- django的rest_framework框架源码剖析
在看源码之前先了解一下什么是rest,restful api. 什么是rest 可以总结为一句话:REST是所有Web应用都应该遵守的架构设计指导原则. REST是Representational S ...
- svn一整套使用,从下载到整个服务器搭建完成的详细说明
SVN服务器的本地搭建和使用 Subversion是优秀的版本控制工具,其具体的的优点和详细介绍,这里就不再多说. 首先来下载和搭建SVN服务器. 现在Subversion已经迁移到apache网站上 ...
- JavaScript转unix时间戳
由于 unix 的时间戳是10位不带毫秒的,所以前端获取到时间戳之后需要做一下处理,才能获取正确的时间. // 假设这里是从服务端获取到的时间戳 var unixTime = data.time; / ...
- Effective Java 之-----for-each循环优于传统的for循环
如下代码: enum Face {1,2,3,4,5,6}: ...... Collection<Face> faces = Array.asList(Face.values); for( ...
- 17年年终总结——走过2017,迎来2018Flag
引言 记得大概从大学毕业到现在都没有写作啥总结性的文章了(ps:应该是没写过啥长篇大论了),所以也不知道怎么个起头.我也闲聊的方式起头吧. 其实跨入18年就想着写篇总结,总结下自己17年的得与失,不足 ...
- XBIM 基于 WexBIM 文件在 WebGL 浏览和加载
目录 xBIM 应用与学习 (一) xBIM 应用与学习 (二) xBIM 基本的模型操作 xBIM 日志操作 XBIM 3D 墙壁案例 xBIM 格式之间转换 xBIM 使用Linq 来优化查询 x ...
- Android图像处理 - 高斯模糊的原理及实现
欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 由 天天P图攻城狮 发布在云+社区 作者简介:damonxia(夏正冬),天天P图Android工程师 前言 高斯模糊是图像处理中几乎每个程序员 ...
- css模板
最近好多人问我博客的css模板.... 现在是高三,没多少时间,趁放假赶紧更一下 主体就是把博客园的一个模板改动了一点 上面的图片特效,也是从别人那里得到的代码,大致就是下面那些,下面的三个图片换成自 ...
- Azure Automation (6) 执行Azure SQL Job
<Windows Azure Platform 系列文章目录> 因为China Azure SQL Database目前还没有SQL Job的功能,如果要异步执行SQL 存储过程,可以使用 ...
- 深度学习(一。深度学习概览)(mooc视频https://www.icourse163.org/learn/MSRA-1002255002?tid=1002370003#/learn/content?type=detail&id=1003271123)
一. 深度学习概览 1.为什么resnet应用在图像识别 因为传统神经网络精度有限,而只是增加层数无法提高精度.而resnet可以改变这个问题. 2.Microsoft SwitchBoard 在语音 ...