如何格式化struts 2选择标记中的日期列表?

时间:2012-05-04 18:49:42

标签: java date select struts2 tags

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

我在这里做的是填充一个带有(周末)日期列表的选择框,我可以选择将哪些日期添加到员工的工作时间表。基本上我正在尝试格式化它们,以便它显示出漂亮和整洁(MM / dd / yyyy),但我似乎无法找到正确的方法来做到这一点。我尝试在下面的列表中插入格式标记,我尝试在标记中使用format.date参数,我尝试使用listValue格式化日期,但似乎没有任何工作。我在这里错过了什么吗?

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

2 个答案:

答案 0 :(得分:2)

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

以下内容适用于提供名为simpleDateFormat的java.text.SimpleDateFormat属性的操作(请注意,这些select标记中唯一不同的部分是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 behaviour when using #this in s:select

答案 1 :(得分: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"/>