多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] # 注意 **传递表单的要和绑定的类型,至少是可以转换过去的** # get参数绑定到控制器 ~~~ @RequestMapping(path = "/word", method = {RequestMethod.GET}) // public String sayWord(String name, String pwd) { System.out.println("hello sayWord: " + name + pwd); //返回的会自动找对应的jsp文件 webapp/WEB-INF/pages/success.jsp return "success"; } ~~~ 请求的url ~~~ /user/word?name=1&pwd=2 ~~~ # post参数绑定JavaBean 首先: 表单 ~~~ <form action="http://localhost:8080/studyjava_war_exploded/user/word" method="post"> 姓名: <input type="text" name="username" /> <br/> 密码: <input type="password" name="password" /> <br/> 金额: <input type="text" name="money" /> <br/> 用户姓名: <input type="text" name="user.uname" /> <br/> 用户年龄: <input type="text" name="user.age" /> <br/> <input type="submit" value="提交" /> </form> ~~~ 准备javaBean ~~~ public class User implements Serializable { private String uname; private Integer age; ~~~ ~~~ public class Account implements Serializable { private String username; private String password; private Double money; private User user; ~~~ 然后控制器 ~~~ //封装到javaBean @RequestMapping(path = "/word") public String sayWord(Account account) { System.out.println("hello sayWord: " + account); return "success"; } ~~~ 控制器参数直接写javaBean,他会封装到这里 # post参数绑定JavaBean中集合 首先表单 ~~~ <form action="word" method="post"> 姓名:<input type="text" name="username" /><br/> 密码:<input type="text" name="password" /><br/> 金额:<input type="text" name="money" /><br/> 用户姓名L1:<input type="text" name="list[0].uname" /><br/> 用户年龄L1:<input type="text" name="list[0].age" /><br/> 用户姓名L2:<input type="text" name="list[1].uname" /><br/> 用户年龄L2:<input type="text" name="list[1].age" /><br/> 用户姓名M1:<input type="text" name="map['one'].uname" /><br/> 用户年龄M1:<input type="text" name="map['one'].age" /><br/> 用户姓名M2:<input type="text" name="map['two'].uname" /><br/> 用户年龄M2:<input type="text" name="map['two'].age" /><br/> <input type="submit" value="提交" /> </form> ~~~ javaBean ~~~ public class Account implements Serializable { private String username; private String password; private Double money; private List<User> list; private Map<String, User> map; ~~~ 控制器代码不变 # 自定义类型转换器 ~~~ //定义一个类,实现 Converter 接口,该接口有两个泛型。 public interface <S, T> {//S:表示接受的类型,T:表示目标类型 //实现类型转换的方法 Converter @Nullable T convert(S source); } ~~~ 写个自定义类型转换器 ~~~ import org.springframework.core.convert.converter.Converter; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; /** * 把字符串转换日期 */ public class StringToDateConverter implements Converter<String, Date> { /** * String source 传入进来字符串 * * @param source * @return */ @Override public Date convert(String source) { // 判断 if (source == null) { throw new RuntimeException("请您传入数据"); } DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); try { // 把字符串转换日期 return df.parse(source); } catch (Exception e) { throw new RuntimeException("数据类型转换出现错误"); } } } ~~~ 把自己写的类型转换器在springmvc.xml中注册下 beans标签下 ~~~ <!--配置自定义类型转换器--> <bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean"> <property name="converters"> <set> <bean class="com.jdxia.utils.StringToDateConverter"/> </set> </property> </bean> <!-- 开启SpringMVC框架注解的支持 --> <!-- 引用自定义类型转换器 --> <mvc:annotation-driven conversion-service="conversionService"/> ~~~ 日期就传递这种`2020-11-11`就可以