我正在将一些Struts1代码迁移到Struts2,并对下面代码的迁移感到困惑。
Struts1的:
<logic: notEmpty name="newsListForm" property="generalNews.list">
<logic:iterate id="generalNews"
name="newsListForm"
property="generalNews.list"
type="com.ab.NewsDTO"
indexId="rowCount">
<%
if(rowCount.longValue() % 2 == 0){
bgcolor = "#FFFFF";
}else{
bgcolor = "#EEEEE";
}
%>
</logic: iterate>
</logic: notEmpty>
我已将以上代码迁移为:
Struts2的
<s:if test="(newsListBean.generalNews.list != null)">
<s:iterator id="generalNews"
values="generalNews.list"
status="incrementer">
<s:if test="#incrementer.even==true">
<% pageContext.setAttribute("bgcolor","#FFFFFF")%>
</s:if>
<s:else>
<% pageContext.setAttribute("bgcolor","#EEEEEE")%>
</s:else>
>
</s:iterator>
</s:if>
这是迁移这些迭代的正确方法吗? notEmpty标签?
答案 0 :(得分:0)
不,这不对。原始代码使用标记和scriptlet代码生成一些可能是JavaScript代码的文本。
但转换后的代码没有这样做。相反,它用于设置页面上下文属性。
答案 1 :(得分:0)
有点偏离主题,但有关:有一种方法,通过使用适当的CSS来做到这一点更简洁。
首先要有行颜色的类:这是你应该拥有的东西,而不是将表示定义结合到JSP代码中:
<style>
.row-0 { bgcolor: #ffffff }
.row-1 { bgcolor: #eeeeee }
</style>
然后使用它们为你需要的任何东西构建类名(在这里,很可能<td>
s):
<s:iterator id="generalNews" values="generalNews.list" status="stat">
<tr class="row-${stat.count % 2}">
<!-- ... Table row content ... -->
</tr>
</s:iterator>
(粗略;这是来自记忆。)