2

我正在尝试在 struts 2 选择标签中格式化日期,但这样做有困难。我知道有一个 struts 2 日期标签,但我认为这不是我想要的。

我在这里所做的是填充一个带有(周末)日期列表的选择框,我可以在其中选择要添加到员工休假表中的日期。基本上我正在尝试对它们进行格式化,以使其显示得漂亮整洁(MM/dd/yyyy),但我似乎找不到正确的方法来做到这一点。我尝试在下面的列表之间插入格式标签,我尝试在标签中使用 format.date 参数,我尝试使用 listValue 来格式化日期,但似乎没有任何效果。我在这里错过了什么吗?

<s:select size="25" id="inputExclusionDates" name="available" list="availableExclusions" multiple="true" cssClass="multi-select" />

4

2 回答 2

2

为了好玩,我花时间弄清楚如何在 OGNL 中做到这一点,由于一些奇怪的皱纹,这并不像我预期的那么容易。

以下内容适用于提供名为 simpleDateFormat 的 java.text.SimpleDateFormat 属性的操作(请注意,这些选择标记中唯一不同的部分是 listValue 属性):

<s:select listValue="simpleDateFormat.format(new java.util.Date(#this[0].time))" size="25" id="inputExclusionDates" name="available" list="availableExclusions" multiple="true" cssClass="multi-select" />

以下内容与上述内容相同,但在 JSP 中执行所有操作:

<s:select listValue="(new java.text.SimpleDateFormat('MM/dd/yyyy')).format(new java.util.Date(#this[0].time))" size="25" id="inputExclusionDates" name="available" list="availableExclusions" multiple="true" cssClass="multi-select" />

现在我提到了一条皱纹,眼睛好的人会注意到这看似多余的表情new java.util.Date(#this[0].time),毕竟我应该只能说#this[0]。毕竟这是有道理的,但它不起作用。因此,由于这让我有些困惑,我会问一个关于它的问题:Strange OGNL behavior when using #this in s:select

于 2012-05-06T22:39:21.550 回答
1

格式化日期的最简单方法:用一些“格式化日期方法”而不是日期来填充您的列表。

1 使用“格式化日期”方法创建类

public class MyDate {
  private Date date;

  public Date getDate(){
    return date;
  }

  public String getFormatedDate(){
    String str = **some code to format date**;
    return  str;
  }  

2 将此对象放入 availableExclusions 列表中

3

<s:select size="25" id="inputExclusionDates" name="available" list="availableExclusions" multiple="true" cssClass="multi-select" listKey="date" listValue="formatedDate"/>
于 2012-05-05T09:27:12.207 回答