SpringMVC Date Bad request 解决办法

这段时间,在写一个简单的StringMVC中Controller 遇到一个这样的问题。

Controller类参数对象中,有一个属性是Date格式的,前台传值时,总是报HTTP 400 的错。

最后的解决思路是在spring-mvc.xml 中加入配置

<mvc:annotation-driven conversion-service="conversionService"/>
    <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
        <property name="converters">
            <set>
                <bean class="org.springframework.core.convert.support.StringToBooleanConverter"></bean>
                <bean class="com.*.*.converters.StringToEnumConverterFactory" />
            </set>
        </property>
        <property name="formatters">
            <set>
                <bean class="com.*.*.converters.DateFormatter"></bean>
            </set>
        </property>
    </bean>


public class DateFormatter implements Formatter<Date> {

    public String print(Date object, Locale locale) {
        return null;
    }

    public Date parse(String text, Locale locale) throws ParseException {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = null;
        try {
            date = format.parse(text);
        } catch (Exception e) {
            format = new SimpleDateFormat("yyyy-MM-dd");
            date = format.parse(text);
        }
        return date;
    }

}


问题解决。

再加入一个转换

final class StringToEnumConverterFactory implements ConverterFactory<String, Enum> {

    public <T extends Enum> Converter<String, T> getConverter(Class<T> targetType) {
        return new StringToEnum(targetType);
    }

    private class StringToEnum<T extends Enum> implements Converter<String, T> {

        private final Class<T> enumType;

        public StringToEnum(Class<T> enumType) {
            this.enumType = enumType;
        }

        public T convert(String source) {
            if (source.length() == 0) {
                // It's an empty enum identifier: reset the enum value to null.
                return null;
            }
            return (T) Enum.valueOf(this.enumType, source.trim());
        }
    }

}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Spring MVC的request对象是用于处理HTTP请求的对象。在Spring MVC中,控制器(Controller)可以通过方法参数或注解来获取和使用request对象。通过Spring的依赖注入机制,可以自动将request对象注入到控制器的方法中。 引用提到了一种获取request对象的方法,即通过WebApplicationContextUtils.RequestObjectFactory的getObject()方法获取当前的request对象。 引用提到了在使用Spring MVC框架时,当页面直接请求json静态文件时会报"Request method 'POST' not supported"的错误。这个错误通常是因为请求的方法不正确导致的。可以检查请求的URL、请求方法以及相应的处理方法是否匹配。 引用提到了一种减少代码冗余的方法,即在控制层基类中注入request对象,并手动调用获取request对象的代码。这种方法可以提高代码的复用性和可维护性。 总结来说,Spring MVC的request对象是用于处理HTTP请求的对象,可以通过方法参数或注解来获取和使用。可以使用依赖注入机制自动注入request对象,也可以手动调用获取request对象的方法。在使用过程中需要注意请求方法的匹配和错误处理。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [SpringMVC中获取request的三种方式](https://blog.csdn.net/weixin_38761297/article/details/100929393)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [spring mvc处理json文件静态资源文件报错Request method 'POST' not supported](https://blog.csdn.net/baidu_19473529/article/details/78408488)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值