考虑以下情况,其中 availableExclusions 是 Date 对象的数组。
<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" />
我创建了上述内容以回答这个问题如何在 struts 2 选择标签中格式化日期列表?(我还建议其他解决方案可能是更好的方法)。不管使用这么长的 OGNL 表达式是否是一个好主意,我都看不出有必要:new java.util.Date(#this[0].time)
尽管出于沮丧创建了该片段,但令我惊讶的是,它发现它在看似等效的地方#this[0]
不起作用(没有产生输出)。
如果我们替换,listValue="#this[0].class"
我们会看到我们所期望的:class java.util.Date
创建一个新的 Date 的行为符合预期,并调用 Date 的不推荐使用的属性,例如listValue="#this[0].day"
产生预期的输出。
为什么我必须使用冗余表达式 new java.util.Date(#this[0].time)
而不是 #this[0]
在这个 select 语句中?
使用 Struts 2.3.1.2