【问题标题】:How would I format a list of dates within a struts 2 select tag?如何格式化 struts 2 选择标签中的日期列表?
【发布时间】:2012-05-04 18:49:41
【问题描述】:

我正在尝试在 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" />

【问题讨论】:

  • “availableExclusions”是日期列表?您想要显示哪些值以及您想将哪些值用作选择值? (listKey="这里有什么?" listValue="这里有什么?")
  • 您赢得 +1 是因为您是第 3000 个问题!现在我将阅读问题...

标签: java date select struts2 tags


【解决方案1】:

为了好玩,我花时间弄清楚如何在 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 behaviour when using #this in s:select

【讨论】:

  • 四元数,太棒了!它就像一个魅力。我知道我可以在后端做到这一点,但我知道必须有办法做到这一点,我只是惊讶于我找不到任何关于它的东西,或者以前没有人问过。非常感谢!
【解决方案2】:

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

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"/>

【讨论】:

  • 这可能是最简单的方法...我会为 java.text.DateFormat 属性添加 get/set,或者在您的情况下更可能是 java.text.SimpleDateFormat,这样您就可以轻松设置你想要的格式。
猜你喜欢
  • 2011-03-05
  • 1970-01-01
  • 2014-05-10
  • 1970-01-01
  • 1970-01-01
  • 2018-12-12
  • 2013-07-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多