当前位置: 首页 > 知识库问答 >
问题:

Spring自定义格式化程序不工作

子车峰
2023-03-14

我是Spring MVC的新手,我刚刚遇到Spring自定义格式化程序。所以我试图为java.util.date创建一个自定义格式化程序。

MyDateFormatter.java

public class MyDateFormatter implements Formatter<Date>{

  private String pattern = "yyyyMMdd";


   @Override
    public String print(Date date, Locale locale) {
        if (date == null) {
            return "";
        }
        return getDateFormat(locale).format(date);
    }

   @Override
    public Date parse(String formatted, Locale locale) throws ParseException {
        if (formatted.length() == 0) {
            return null;
        }
        return getDateFormat(locale).parse(formatted);
    }

    protected DateFormat getDateFormat(Locale locale) {
        DateFormat dateFormat = new SimpleDateFormat(this.pattern, locale);
        dateFormat.setLenient(false);
        return dateFormat;
    }
}
@Controller
public class TestFormatterController {
    @RequestMapping(value="/testFormatter")
    public String getDate(ModelMap map){
        Date date = new Date();
        map.put("date", date);
        return "testFormatter";
    }
}
<h1>${date}<h1>
<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
        <property name="formatters">
            <set>
                <bean class="mypackge.MyDateFormatter">
            </set>
        </property>
    </bean>

共有1个答案

夏侯浩气
2023-03-14

当我们直接打印对象(如${date})时,Spring不调用格式化程序,而是使用 。我将JSP更改为以下内容,现在它按预期工作:

<%@ include file="/WEB-INF/jsp/common/taglibs.jsp"%>
<spring:eval expression="date" />
 类似资料:
  • 我有一张桌子: 数据来自 和字段为: 这就是它在没有格式化程序的情况下是如何呈现的。 因此,我在字段中添加了一个自定义格式设置程序,以删除括号和花括号 我遇到的第一个问题是循环返回中的所有项目的值不起作用。 任何帮助或清除将不胜感激。

  • 我正在将应用程序的安全性迁移到Spring Security4.0。我的要求是身份验证应该是JAAS身份验证,自动化数据将从数据库中提取。所以我已经编写和自定义了身份验证提供程序。但我的问题是Spring没有将身份验证请求委托给我的自定义身份验证提供程序。 代码如下 web.xml条目 调用堆栈

  • 下面的代码再现了这个问题: 上面的代码不做其他注册“自定义”序列化程序的事情(只是委托回原始序列化程序),但它生成的JSON没有null属性: {“第一个”:“鲍勃”,“最后一个”:“巴克”} 我读过许多看似相关的SO文章,但没有一篇能让我找到解决方案。我尝试在序列化时显式地将映射器设置为,但没有成功。 我唯一的线索是JavaDoc for JsonSerializer中的一条注释: 注意:永远不

  • 在我试图使用Apache POI转换的Excel文件中,我有一个单元格,其数值为-3.97819466831428,自定义格式为“0.0 p.p.;(0.0 p.p.)”。因此,在Excel中显示的值是“(4.0 p.p.)” 当我使用POI库转换相同时,我得到的输出为:(4.0 p)如何获得与Excel:(4.0 p. p.)相同的值? 我使用DataFormatter的方式是:

  • 我有一个Spring项目,我尝试添加一个自定义反序列化器来反序列化日期属性,具体取决于它们的格式。如果我将其用作Date属性的注释,则效果很好。但是,如果我将反序列化器添加到对象映射器中,当Jackson反序列化日期时,它不会调用。 我尝试这样应用我的自定义反序列化程序: 我不想每次都对Date属性应用注释,我想默认使用此反序列化器。我做错了什么?

  • spring security oauth的错误格式符合oauth规范,如下所示。 特别是在资源服务器上,我发现为身份验证问题提供不同的错误格式有点奇怪。所以我想改变这个异常的呈现方式。 授权服务器中的错误处理使用标准的Spring MVC特性,即@ExceptionHandler方法 所以我尝试了类似这样的方法来自定义错误的格式: 但这不起作用。 查看代码,所有的错误呈现似乎都是在中完成的。但实