• 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”。

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

  • 相关阅读:
    生成函数学习笔记
    CF1437F Emotional Fishermen
    BZOJ 1443 [JSOI2009]游戏Game
    BZOJ 1018 [SHOI2008]堵塞的交通traffic
    访问量破1000之记录
    BZOJ 1022 [SHOI2008]小约翰的游戏John
    BZOJ1457 棋盘游戏
    BZOJ1874: [BeiJing2009 WinterCamp]取石子游戏
    BZOJ 1188 [HNOI2007]分裂游戏
    Codeforces Round #345 (Div. 2)
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13315452.html
Copyright © 2020-2023  润新知