gpt4 book ai didi

java - 如何更改 Struts2 中的默认日期格式?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:57:27 25 4
gpt4 key购买 nike

我正在开发一个多语言 Struts2 应用程序,我有很多处理 Calendar 属性的操作。默认类型转换大部分时间都有效,但是在某些语言环境中我想更改使用的默认格式。

具体来说,我希望英语语言环境中的日期遵循 yyyy-MM-dd 格式。然而,这不起作用(奇怪的是 yyyy-MM-dd HH:mm 工作正常,但在这种情况下我不想有时间部分),因为 Struts2 期望英语语言环境中的日期看起来不同。

因此,我想更改转换的预期格式。我正在为此寻找一个明智的解决方案。我已经尝试过的选项:

  • A) 自己的StrutsTypeConverter。这应该可行,但我无法将 package.properties 文件中指定的格式注入(inject)其中。
  • B) 更改 getter/setter 对,改为使用 String - 可行,但这不是一个理智的解决方案

如何修正方案A?或者有其他方法吗?当然,如果能完全在配置中做到这一点,那就最好了。

最佳答案

好吧,我找到了解决手头问题的方法,不过,我认为这可以用更明智的方式完成。不管怎样,我发布了我自己的类型转换器:

public class DateConverter extends StrutsTypeConverter {

private DateFormat dateFormat;

{
ActionContext ctx = ActionContext.getContext();
ActionSupport action = (ActionSupport) ctx.getActionInvocation().getAction();
String formatString = action.getText("dateformat.ui");
dateFormat = new SimpleDateFormat(formatString);
}

public Object convertFromString(Map context, String[] values, Class toClass) {
String input = values[0];
try {
Date date = dateFormat.parse(input);
Calendar cal = Calendar.getInstance();
cal.setTime(date);
return cal;
} catch (ParseException e) {
return null;
}
}

public String convertToString(Map context, Object object) {
Calendar cal = (Calendar) object;
return dateFormat.format(cal.getTime());
}

}

我删除了代码的非必要部分,但这是一个可行的解决方案。

关于java - 如何更改 Struts2 中的默认日期格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32888421/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com