SpringMVC报错 404:Bad request

来源:互联网 发布:秦九韶算法 求导数 编辑:程序博客网 时间:2024/05/16 07:32

SpringMVC报错 404:Bad request

   出现这个错误一般是因为前台传入的值与后台实体类的值不匹配,比如说我的emp实体就是因为 date类型,Spring 不能自动封装出现这个问题;
   当然,解决问题最快速的方法是不把属性是date的值直接封装,在后台另外获取后装换,再放入实体,但是这样比较麻烦,所以,可以直接定义全局的Date转换器;
   下面是配置时间转换器的方法:

package com.base.utils;   /**  * 创建时间:* 项目名称:tra* @author hc  * @version 1.0   * 文件名称:DateConverter.java  * 类说明:  自定义日期转换器*/import java.text.DateFormat;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.List;import org.springframework.core.convert.converter.Converter;public class DateConverter implements Converter<String, Date>  {private static final List<String> formarts = new ArrayList<String>(4);static{formarts.add("yyyy-MM");formarts.add("yyyy-MM-dd");formarts.add("yyyy-MM-dd hh:mm");formarts.add("yyyy-MM-dd hh:mm:ss");}public Date convert(String source) {String value = source.trim();if ("".equals(value)) {return null;}if(source.matches("^\\d{4}-\\d{1,2}$")){ return parseDate(source, formarts.get(0));}else if(source.matches("^\\d{4}-\\d{1,2}-\\d{1,2}$")){return parseDate(source, formarts.get(1));}else if(source.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}$")){return parseDate(source, formarts.get(2));}else if(source.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}:\\d{1,2}$")){return parseDate(source, formarts.get(3));}else {throw new IllegalArgumentException("Invalid boolean value '" + source + "'");}}/** * 功能描述:格式化日期 *  * @param dateStr *            String 字符型日期 * @param format *            String 格式 * @return Date 日期 */public  Date parseDate(String dateStr, String format) {Date date=null;try {DateFormat dateFormat = new SimpleDateFormat(format);date = (Date) dateFormat.parse(dateStr);} catch (Exception e) {}return date;}public static void main(String[] args) {System.err.println(new DateConverter().convert("2014-04"));}}  
配置一下spring mvc 配置文件
<!-- 自定义时间转换器 -->    <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">         <property name="converters">        <list>            <bean class="com.hansuo.base.utils.DateConverter"></bean>        </list>        </property>    </bean>      <!-- 注册转换器 -->      <mvc:annotation-driven conversion-service="conversionService" />
<!-- 自定义时间转换器 -->    <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">        <property name="converters">        <list>           <bean class="com.hansuo.base.utils.DateConverter"></bean>       </list>       </property>    </bean>      <!-- 注册转换器 -->      <mvc:annotation-driven conversion-service="conversionService" />

网上我看了一些有关问题,看网友们还有一些其他原因导致这个错误的,特总结归纳了一下方便网友们参考:

(1)log4j的配置文件里错误将部分log打为Info级别所致

(2)传参数的时候,参数名使用了关键字“name”(我试了试,我的没报错正常)

(3)本来要返回json的却忘了加@RequestBody

(4)ajax请求的连接后边忘了加参数

(5)前台传参时参数的顺序与后台实体类的各个属性的顺序不一致(我试了试,我的顺序改变无影响)

(6)如果是传了非实体bean属性的参数过来也会发生这种情况

0 0
原创粉丝点击