情况是这样的:
struts 交给 spring容器初始化 。在action中 有属性 :
private int parentId; 
方法:
public void setParentID(){};IOC情况:
第一次,在parentId=null的情况下, setParentID()方法,会给parentId=0 ;
第二次,在parentId=!null情况下,setParentID()方法,会给parentId=相应的值,例如17 ;
第三次,在parentId= null的情况下, setParentID()方法,会给parentId= 17。
为什么,还是17啊。
而我想要的结果 ,应该是零 。 
会是spring 做优化了吗?

解决方案 »

  1.   

    为了研究,我做了个拦截器,在struts注入属性之前拦截器结果是:
    parentId:null
    相应的在action的打印结果却是 :
    parentId=17filter中public void doFilter(ServletRequest arg0, ServletResponse arg1,
    FilterChain arg2) throws IOException, ServletException { System.out.println("页面属性配置开始!");
    HttpServletRequest httpServletRequest = (HttpServletRequest) arg0;
    HttpServletResponse httpServletResponse = (HttpServletResponse) arg1;
    // 转码
    httpServletRequest.setCharacterEncoding("UTF-8");
    httpServletResponse.setContentType("text/html; charset=UTF-8"); offset = getOffset(httpServletRequest);
    pagersizes = getPagerSizes(httpServletRequest);

    String parentId1 = httpServletRequest.getParameter("parentId");
    System.out.println("拦截器,parentId:"+ parentId1);
    if (parentId1 == null) {
    parentId = 0;
    httpServletRequest.setAttribute("parentId", parentId);
    } else {
    httpServletRequest.setAttribute("parentId", Integer
    .parseInt(parentId1));
    }


    SystemContext.setOffset(offset);
    SystemContext.setPagersizes(pagersizes); try {
    arg2.doFilter(httpServletRequest, httpServletResponse);
    } finally {
    System.out.println("释放本地变量");
    SystemContext.removeOffset();
    SystemContext.removePagersizes();
    } }
    action:public String execute() throws Exception { System.out.println("parentId=" + parentId);
    System.out.println("pager.offset: "
    + request.getParameter("pager.offset")); PagerModel pm = moduleManager.searchModules(parentId); System.out.println("pagerModel.listSize: " + pm.getObjects().size());
    System.out.println("pagerModel.total: " + pm.getTotal()); request.setAttribute("pm", pm);
    request.setAttribute("parentId", parentId); int ppid = 0;
    if (parentId != 0) {
    Module module = moduleManager.findModule(parentId);
    if (module.getParent() != null) {
    ppid = module.getParent().getId();
    }
    } System.out.println("ppid: " + ppid);
    request.setAttribute("ppid", ppid);
    return SUCCESS;
    }