1

我正在使用 Struts2 taglib 生成递减年份列表(2016,2015等)。

我正在使用日期标签从 a 中获取年份java.util.Date,但是当我使用减号 ( -) 运算符时year正确但带有小数...

看一看:

<s:set var="currentDate" value="%{new java.util.Date()}"/>
<s:date var="currentDate2YEAR" name="#currentDate" format="yyyy" />
<br>(YEAR)  = <s:property value="#currentDate2YEAR" />
<br>(YEAR -1)  = <s:property value="#currentDate2YEAR - 1" />

有了这个,我得到:

(YEAR) = 2016

(YEAR -1) = 2015.0     <== I need to remove this decimal ==>
4

3 回答 3

0

很多方法可以做到这一点,像往常一样,更好的方法是涉及服务器端方法,将视图中的逻辑减少到生理上的最低限度。顺便说一句,如果您需要在视图中执行此操作,请尝试如下:

<s:set var="currentDate" value="%{new java.util.Date()}"/>
<s:set var="currentYear">
    <s:date name="#currentDate" format="yyyy" />
</s:set>
<br>(YEAR)     = <s:property value="%{#currentYear    }" />
<br>(YEAR - 1) = <s:property value="%{#currentYear - 1}" />
<br>(YEAR - 2) = <s:property value="%{#currentYear - 2}" />

它也可以在迭代器中编写脚本,如果您可以发布有关您正在执行的操作的更多详细信息,如果这不起作用或还不够,这将有所帮助。

于 2016-03-07T10:02:25.097 回答
0

我找到了这个解决方案并且它有效(它使用 intValue 方法):

<s:date var="currentDate2YEAR" name="#currentDate" format="yyyy" />
<br>(YEAR)  = <s:property value="#currentDate2YEAR" />
<br>(YEAR -1)  = <s:set var="year" value="#currentDate2YEAR - 1" />
<br>(YEAR -1) = <s:property value="#year.intValue()" />
于 2016-04-19T10:54:54.743 回答
0

首先:不要在视图中做那种事情,而是在后端构造一个列表在视图中迭代它。

第二:您使用的是一些旧版本的 Struts2,这<s:set value="%{new java.util.Date()}"/>就是允许 -> 的原因。在最新版本中,您不能以这种方式在 JSP 中创建新实例。你可以使用<s:bean>标签来做到这一点。

第三:为什么看到.0数字后?因为在格式化之后,年份部分实际上是一个字符串,当你减去它时,它会转换为一些浮点数。

要绕过它,只需在服务器中执行此操作即可。:)

那么在 JSP 中也有一种方法可以做到这一点。

在数字之后添加h(即#currentDate2YEAR - 1h),这将向 OGNL 表明这是一个BigInteger而不是浮点数。

<s:bean var="currentDate" name="java.util.Date" />
<s:date var="currentDate2YEAR" name="#currentDate" format="yyyy" />
<br>(YEAR)  = <s:property value="#currentDate2YEAR" />
<br>(YEAR -1)  = <s:property value="#currentDate2YEAR - 1h" />
于 2016-03-07T11:44:31.693 回答