参数绑定与传值

参数绑定与传值

上篇说到了SpringMVC的工作原理及其配置;

本次主要解释的就是在前端的控制器当中各种跳转,包括方法之间的跳转,方法到页面,页面到方法之间的跳转,这是本篇博文所要提及的;

1.   功能方法之间的跳转

 

功能方法之间的跳转方式有两种,一种就是ModelAndView,一种就是return直接返回地址.

涉及到的绝对路径与相对路径的问题商品博文已经提到过,这而就不在赘述了。

1) ModelAndView

我们来看代码:

ModelAndViewmodelAndView=new ModelAndView();

modelAndView.setViewName("addUser2.do");
return  modelAndView;
ModelAndView上篇也进行了说明。
2)return
return  "addUser2.do";
但是需要注意的是,直接返回目标地址,仅仅只是进行了地址值得返回,它是不能携带数据的,若想要用数据则要用到request域的setAAttribute()和getAttribute()方法。

 

2.   方法和页面之间的传值

也有两种值传递得方式。

一个就是用到ModelAndView的addObject()方法,来进行值得传递;

另一个用到了一个属性就是Model属性得addAttribute()方法;

因为model只能进行值得传递,所以他需要和其它二者配合使用;

用这种两种值得传递方式与前面两种跳转方式组合即可,我们来看代码:

第一ModelAndView

@RequestMapping("/addUser2.do")
public ModelAndView addUser2(HttpServletRequest request, HttpServletResponse response){
    ModelAndView modelAndView=new ModelAndView();
    List<UserDto> list=new ArrayList<>();
    list.add(new UserDto("sss","fewfe",new Date(),25.48945));
    list.add(new UserDto("sss2","fewfe",new Date(),25.25));
  modelAndView.addObject("userList",list);
    modelAndView.setViewName("/userList.jsp");
    return  modelAndView;
}

第二 如果是model得防止传递值

modelAndView.addObject("userList",list);

只需要把这句话改成:
model.addAtteibute(
"userList",list);即可,当然它也可以配合return来使用;

3.   从页面到方法之间得传值

从页面到控制器,控制器有三只接受值得方式:

一 就是用,request.getParameter(name);这种方式最简单就不做解释;

二 就是指定类型接受参数,若是数组直接声明为该name得数组即可;

       但是如果是类型不匹配,这样是经不去控制器的;

三 就是封装一个Dto的对对象来接受这些数据,这个对象的属性值,需要与页面提交的数据保持一致,如果只是一部分的还,则会有数据的丢失;

       第三种是对第二种的优化,所以我们直接来看第三种的代码;

@RequestMapping("/addUser.do")
public ModelAndView addUser(UserDto dto){
    ModelAndView modelAndView=new ModelAndView();
   String [] ages=dto.getAge();
    for (String age : ages) {
        System.out.println(age);
    }
    modelAndView.setViewName("addUser2.do");
    return  modelAndView;

}

4.   特殊数据的处理

我们在做项目的时候通常会遇到一些一些特殊数据如Date类型的数据,页面是不能识别这种类型的,所以小编的建议是直接使用long或者是String类型,这样更加的便捷,‘但是如果是用到了这种数据类型,我们也是可以解决的,

因为<mvc:annotation-driven></mvc:annotation-driven>Springmvc提供的自动注册时支持一些数据的绑定的,具体小编的其它博文也有介绍,大家可以去看,
所以在这里我们可以用一个数据绑定的注解@DateTimeFormate(pattern=”yyyy-MM-dd”)
当然日期的格式可以自己去定义,这里只是一个例子,当然除了这个注解还有比如说@NUmberFormate等大家可以去了解我就不一一诉说了。

5.   5.嵌套绑定数据

最后我们来简单了解一下嵌套绑定数据呢?

首先时两个Dto A and A=B

就是在A的属性提交当中包含B的属性,大体就是这样,那么怎么提交和接受呢?

很简单

在页面上面的提交:name=”A.(B的属性名)”

接受:A的对象dto.getA().get(B的属性名)()

没错就是这样。

以上就是简单的方法之间,方法一页面之间的跳转以及值得指的传递。
 版权声明:本文为博主原创文章,未经博主允许不得转载。

猜你喜欢

转载自blog.csdn.net/qq_42112846/article/details/80904402
今日推荐