ModelMap和ModelAndView

来源:互联网 发布:零基础学seo 编辑:程序博客网 时间:2024/06/05 20:29

首先介绍ModelMap和ModelAndView的作用
ModelMap
ModelMap对象主要用于传递控制方法处理数据到结果页面,也就是说我们把结果页面上需要的数据放到ModelMap对象中即可,他的作用类似于request对象的setAttribute方法的作用,用来在一个请求过程中传递处理的数据。通过以下方法向页面传递参数:
addAttribute(String key,Object value);
在页面上可以通过el变量方式$key或者bboss的一系列数据展示标签获取并展示modelmap中的数据。
modelmap本身不能设置页面跳转的url地址别名或者物理跳转地址,那么我们可以通过控制器方法的返回值来设置跳转url地址别名或者物理跳转地址。

ModelAndView
ModelAndView对象有两个作用:
作用一 设置转向地址,如下所示(这也是ModelAndView和ModelMap的主要区别)
ModelAndView view = new ModelAndView("path:ok");

作用二 用于传递控制方法处理结果数据到结果页面,也就是说我们把需要在结果页面上需要的数据放到ModelAndView对象中即可,他的作用类似于request对象的setAttribute方法的作用,用来在一个请求过程中传递处理的数据。通过以下方法向页面传递参数:
addObject(String key,Object value);

在页面上可以通过el变量方式$key或者bboss的一系列数据展示标签获取并展示ModelAndView中的数据。

作用介绍完了后,接下来介绍使用方法


ModelMap
ModelMap的实例是由bboss mvc框架自动创建并作为控制器方法参数传入,用户无需自己创建。

Java代码 复制代码 收藏代码
  1. public String xxxxmethod(String someparam,ModelMap model)   
  2. {   
  3.      //省略方法处理逻辑若干  
  4.       //将数据放置到ModelMap对象model中,第二个参数可以是任何java类型  
  5.       model.addAttribute("key",someparam);   
  6.      ......   
  7.      //返回跳转地址   
  8.       return "path:handleok";   
  9. }  
Java代码  收藏代码
  1. public String xxxxmethod(String someparam,ModelMap model)  
  2. {  
  3.      //省略方法处理逻辑若干  
  4.       //将数据放置到ModelMap对象model中,第二个参数可以是任何java类型  
  5.       model.addAttribute("key",someparam);  
  6.      ......  
  7.      //返回跳转地址  
  8.       return "path:handleok";  
  9. }  



ModelAndView
ModelAndView的实例是由用户手动创建的,这也是和ModelMap的一个区别。

Java代码 复制代码 收藏代码
  1. public ModelAndView xxxxmethod(String someparam)   
  2. {   
  3.      //省略方法处理逻辑若干  
  4.       //构建ModelAndView实例,并设置跳转地址  
  5.       ModelAndView view = new ModelAndView("path:handleok");   
  6.       //将数据放置到ModelAndView对象view中,第二个参数可以是任何java类型  
  7.       view.addObject("key",someparam);   
  8.      ......   
  9.      //返回ModelAndView对象view  
  10.       return view;   



补充:

    public ModelAndView view(HttpServletRequest request, HttpServletResponse response){
        Integer memberId = Integer.parseInt(request.getParameter("memberId"));
        Member member = memberService.get(memberId);
        return new ModelAndView("view").addObject("member", member);
    }

    public ModelAndView delete(HttpServletRequest request, HttpServletResponse response) throws ServletRequestBindingException{
        Integer memberId = ServletRequestUtils.getIntParameter(request, "memberId");
        memberService.delete(memberId);
        return new ModelAndView("redirect:/member/list.html");
    }
@Controller
@RequestMapping(ConstantsForCont.SUB_ADMIN_URL + "/codeConfig.action")
public class CodeConfigController extends PfBaseController{
    public final static String DETAIL_CODE_CONFIG_PAGE = "/ebiz/web/admin/jsp/detailCodeConfig";
    public final static String EDIT_CODE_CONFIG_PAGE = "/ebiz/web/admin/jsp/codeConfigOperate";

        //进入页面
        @RequestMapping(params = "action=initCodeConfig")
        public ModelAndView initCodeConfig(HttpServletRequest req,
                HttpServletResponse resp) {
            logger.info("访问/codeConfig.action?action=initCodeConfig");
            ModelAndView modelAndView = new ModelAndView();
            modelAndView.setViewName("/ebiz/web/admin/jsp/codeConfig");
            return modelAndView;
        }
        //查询编码列表
        @RequestMapping(params = "action=queryCodeConfig")
        public void queryCodeConfig(HttpServletRequest req,
                HttpServletResponse res) {
            logger.info("访问/codeConfig.action?action=queryCodeConfig");
            PageQueryModel pageQueryModel = this.getPageQueryModel(req);

            String codeType = (String) req.getParameter("codeType");
            String code = (String) req.getParameter("code");
            String codeLabel = (String) req.getParameter("codeLabel");

            if (!StringUtils.isBlank(codeType)) {
                pageQueryModel.addParameter("codeType", codeType);
            }
            if (!StringUtils.isBlank(code)) {
                pageQueryModel.addParameter("code", code);
            }
            if (!StringUtils.isBlank(codeLabel)) {
                pageQueryModel.addParameter("codeLabel", codeLabel);
            }
            pageQueryModel.addParameter("sortCol", "modified_date");
            pageQueryModel.addParameter("sortOrder", "desc");
            // 根据实体类转换成xml
            XStreamComponent xStreamComponent = XStreamComponent.newInstance();
            xStreamComponent.alias(new Class[] { PageQueryModel.class, TransResult.class, ValidateError.class,
                    Response.class });
            String xmlRequest = xStreamComponent.toXML(pageQueryModel);
            // 访问webservice
            logger.info("'调用查询编码信息'webservice开始,参数为:" + xmlRequest);
            // 返回该用户指定条件下的订单信息列表
            String xmlResponse = WsUtil.invoke(this.config.getPortalApiUrlPrefix()
                    + ConstantsForCont.SUB_CODECONFIG_URL, "queryCode", xmlRequest);
            logger.info("'调用查询投保订单信息'webservice结束,参数为:" + xmlResponse);
            try {
                this.renderPageGrid(res, xmlResponse);
            }
            catch (IOException e) {
                logger.error(e);
            }

        }
        //查询详细信息
        @RequestMapping(params="action=showDetailCodeConfig")
        public String showDeatilCodeConfig(ModelMap model,HttpServletRequest req, InsuranceInputDTO insuranceInputDTO,
                BindingResult result){
            logger.info("访问/codeConfig.action?action=showDetailCodeConfig");
            //取得编码流水号
            String id=req.getParameter("id");
            //通过编码流水号取得编码信息
            XStreamComponent xStreamComponent = XStreamComponent.newInstance();
            xStreamComponent.alias(new Class[]{Response.class, TransResult.class, EbizCode.class,String.class });
            String xmlRequest = xStreamComponent.toXML(id);
            logger.info("调用登录webservice,参数为:" + xmlRequest);
            String wsResult = WsUtil.invoke(
                    this.config.getPortalApiUrlPrefix() + ConstantsForCont.SUB_CODECONFIG_URL, "queryDetailCode",
                    xmlRequest);
            logger.info("调用登录webservice,回应为:" + wsResult);
            // 组装返回值
            Response response = (Response) xStreamComponent.fromXML(wsResult);
            TransResult transResult=response.getTransResult();
            EbizCode ebizCode=(EbizCode) transResult.getObject();
            System.out.println(ebizCode+"899999999999999999999");
            model.put("ebizCode", ebizCode);
            return DETAIL_CODE_CONFIG_PAGE;
            
        }
        
        /***
         * 1.选中某一条属性点击属性修改时,弹出修改属性的界面
         * 2.点击新增属性时,弹出新增属性的界面
         */
        @RequestMapping(params = "action=addCodeConfig")
        public ModelAndView showCodeConfig(HttpServletRequest req, HttpServletResponse res){
            logger.info("访问/codeConfig.action?action=addCodeConfig");
            ModelAndView modelAndView = new ModelAndView();
            String id = (String) req.getParameter("id");
            if(StringUtils.isBlank(id)){
                id = "";
            }
            if(!"".equals(id)){
            //调用根据propertyId获取一条EBIZ_PRODUCT_PROPERTY记录的webservice
            XStreamComponent xStreamComponent = XStreamComponent.newInstance();
            xStreamComponent.alias(new Class[] { TransResult.class, ValidateError.class,
                    Response.class,EbizCode.class ,String.class});
            String requestXml = xStreamComponent.toXML(id);
         
            logger.info("调用获得对应的编码详细信息webservice,参数为:" + requestXml);
            String xmlResponse = WsUtil.invoke(this.config.getPortalApiUrlPrefix()
                    + ConstantsForCont.SUB_CODECONFIG_URL, "queryDetailCode", requestXml);
            logger.info("调用获得对应的产品属性详细信息webservice,回应为:" + xmlResponse);
            
            
            Response response = (Response) xStreamComponent.fromXML(xmlResponse);
            TransResult transResult=response.getTransResult();
            EbizCode ebizCode=(EbizCode) transResult.getObject();
            if(ebizCode != null){
                modelAndView.addObject(ebizCode);
            }
            }      
            modelAndView.setViewName(EDIT_CODE_CONFIG_PAGE);
            return modelAndView;
        }
        /**
         * 新增编码或修改编码信息时保存编码信息
         */
    @RequestMapping(params = "action=saveEbizCode")
    public String saveEbizCode(HttpServletRequest req, HttpServletResponse resp) {
        logger.info("访问/codeConfig.action?action=addCodeConfig");
        if (req.getParameter("id") != null
                && !"".equals(req.getParameter("id"))) {
            EbizCode ebizCode = new EbizCode();
            ebizCode.setId(new BigDecimal(req.getParameter("id")));
            ebizCode.setCodeType(req.getParameter("editCodeType"));
            ebizCode.setCode(req.getParameter("editCode"));
            ebizCode.setCodeLabel(req.getParameter("editCodeLabel"));
            ebizCode.setModifiedDate(new Date());
            if(req.getParameter("editCreatedDate")!=null&&!"".equals(req.getParameter("editCreatedDate"))){
                ebizCode.setCreatedDate(new Date(req.getParameter("editCreatedDate")));
            }else{
                ebizCode.setCreatedDate(new Date());

            }
            
            if (req.getParameter("editIsDelete") != null
                    && !"".equals(req.getParameter("editIsDelete"))) {
                ebizCode.setIsDelete(new Short(req.getParameter("editIsDelete")));
            }
            ebizCode.setParentCode(req.getParameter("editParentCode"));
            if (req.getParameter("editShowOrder") != null
                    && !"".equals(req.getParameter("editShowOrder"))) {
                ebizCode.setShowOrder(new BigDecimal(req
                        .getParameter("editShowOrder")));
            }
            ebizCode.setStandByFlag1(req.getParameter("editStandByFlag1"));
            System.out.println(req.getParameter("editStandByFlag1"));
            ebizCode.setStandByFlag2(req.getParameter("editStandByFlag2"));
            ebizCode.setStandByFlag3(req.getParameter("editStandByFlag3"));
            ebizCode.setStandByFlag4(req.getParameter("editStandByFlag4"));
            ebizCode.setStandByFlag5(req.getParameter("editStandByFlag5"));
            XStreamComponent xStreamComponent = XStreamComponent.newInstance();
            xStreamComponent.alias(new Class[] { TransResult.class,
                    ValidateError.class, Response.class, EbizCode.class,
                    String.class });
            String requestXml = xStreamComponent.toXML(ebizCode);
            logger.info("调用修改编码webservice,参数为:" + requestXml);
            String xmlResponse = WsUtil.invoke(this.config
                    .getPortalApiUrlPrefix()
                    + ConstantsForCont.SUB_CODECONFIG_URL, "updateCode",
                    requestXml);
            logger.info("调用修改产品属性webservice,回应为:" + xmlResponse);
        
        } else {
            EbizCode ebizCode = new EbizCode();
            ebizCode.setCodeType(req.getParameter("newCodeType"));
            ebizCode.setCode(req.getParameter("newCode"));
            ebizCode.setCodeLabel(req.getParameter("newCodeLabel"));
            ebizCode.setCreatedDate(new Date());
            ebizCode.setModifiedDate(new Date());
            if (req.getParameter("newIsDelete") != null
                    && !"".equals(req.getParameter("newIsDelete"))) {
                ebizCode
                        .setIsDelete(new Short(req.getParameter("newIsDelete")));
            }
            ebizCode.setParentCode(req.getParameter("newParentCode"));
            if (req.getParameter("newShowOrder") != null
                    && !"".equals(req.getParameter("newShowOrder"))) {
                ebizCode.setShowOrder(new BigDecimal(req
                        .getParameter("newShowOrder")));
            }
            ebizCode.setStandByFlag1(req.getParameter("newStandByFlag1"));
            System.out.println(req.getParameter("newStandByFlag1"));
            ebizCode.setStandByFlag2(req.getParameter("newStandByFlag2"));
            ebizCode.setStandByFlag3(req.getParameter("newStandByFlag3"));
            ebizCode.setStandByFlag4(req.getParameter("newStandByFlag4"));
            ebizCode.setStandByFlag5(req.getParameter("newStandByFlag5"));
            XStreamComponent xStreamComponent = XStreamComponent.newInstance();
            xStreamComponent.alias(new Class[] { TransResult.class,
                    ValidateError.class, Response.class, EbizCode.class,
                    String.class });
            String requestXml = xStreamComponent.toXML(ebizCode);
            logger.info("调用增加编码webservice,参数为:" + requestXml);
            String xmlResponse = WsUtil.invoke(this.config
                    .getPortalApiUrlPrefix()
                    + ConstantsForCont.SUB_CODECONFIG_URL, "addCode",
                    requestXml);
            logger.info("调用增加产品属性webservice,回应为:" + xmlResponse);
        }
        return "redirect:/ebiz/admin/codeConfig.action?action=initCodeConfig";

    }
    /**
     * 删除
     */
    @RequestMapping(params="action=deleteCodeConfig")
    public String deleteEbizCode(HttpServletRequest req, HttpServletResponse resp){
        logger.info("访问/codeConfig.action?action=deleteCodeConfig");        
        String codeId = req.getParameter("id");        
        
        XStreamComponent xStreamComponent = XStreamComponent.newInstance();
        xStreamComponent.alias(new Class[] { TransResult.class, ValidateError.class,
                Response.class,EbizCode.class ,String.class});
        String requestXml = xStreamComponent.toXML(codeId);
        
        logger.info("删除一条编码记录webservice,参数为:" + requestXml);
        String xmlResponse = WsUtil.invoke(this.config.getPortalApiUrlPrefix()
                + ConstantsForCont.SUB_CODECONFIG_URL, "deleteCode", requestXml);        
        logger.info("删除一条编码记录webservice,回应为:" + xmlResponse);
        
        return "redirect:/ebiz/admin/codeConfig.action?action=initCodeConfig";
    }
0 0
原创粉丝点击