我正在尝试格式化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" />
答案 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"/>