zoukankan      html  css  js  c++  java
  • 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”。

            通过这次教训,让我明白不是什么东西都按部就班照搬就行,模仿之前需要深刻地理解它们,知道它们在那里用,如何用的正确,这样才会将别人已有的经验变为自己的知识。

  • 相关阅读:
    博客链接--竹子
    升级sudo至1.9.5p2,修复sudo漏洞
    使用Jenkins自动打包部署前端
    升级sudo至1.9.5p2,修复sudo漏洞
    60行C代码实现一个shell
    copy_{to, from}_user()的思考
    Code Server 是什么?
    Linux常用命令学习(5)
    Linux sudo权限提升漏洞(CVE-2021-3156)
    厚书读薄丨《Vim实用技巧》第一部分 模式
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13315452.html
Copyright © 2011-2022 走看看