我使用Struts2 taglib生成一个下降年份列表(2016
,2015
等等。)。
我使用日期代码从java.util.Date
获取年份,但是当我使用减号(-
)时,运算符year
正确但是带小数...... < / p>
看一看:
<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 ==>
答案 0 :(得分: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}" />
它也可以在迭代器中编写脚本,如果您可以发布有关您正在做的事情的更多详细信息,如果这不起作用或者不够,则会有所帮助。
答案 1 :(得分:0)
首先:不要在视图中做那种事情,而是在后端构建一个列表,在视图中迭代它。
第二:你正在使用一些旧版本的Struts2,这就是为什么这个 - &gt;允许<s:set value="%{new java.util.Date()}"/>
。在最新版本中,您无法以这种方式在JSP中创建新实例。您可以使用<s:bean>
标记来执行此操作。
第三:为什么在数字后看到.0
?因为在格式化之后,year part实际上是一个String,当你减去它时会转换为某个浮点数。
要解决它,只需在服务器中执行此操作即可。 :)
有一种方法可以在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" />
答案 2 :(得分: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()" />