SpringMVC报错 404:Bad request

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属性的参数过来也会发生这种情况

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值