我正在将一些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>这是迁移这些迭代& <logic:notEmpty>标记的正确方法吗?
发布于 2018-02-06 16:18:01
不,这不对。原始代码使用标记和脚本代码生成一些文本,这可能是一种JavaScript代码。
但是转换的代码并不能做到这一点。相反,它用于设置页面上下文属性。
发布于 2018-02-07 14:33:42
有些离题,但相关:有一种方法,更干净的方式,通过使用适当的CSS来做到这一点。
首先,拥有行颜色的类:无论如何,这是您应该拥有的东西,而不是将表示定义嵌入JSP代码中:
<style>
.row-0 { bgcolor: #ffffff }
.row-1 { bgcolor: #eeeeee }
</style>然后使用这些来构造任何您需要的类名(在这里,可能是<td>):
<s:iterator id="generalNews" values="generalNews.list" status="stat">
<tr class="row-${stat.count % 2}">
<!-- ... Table row content ... -->
</tr>
</s:iterator>(粗略地说,这是记忆中的。)
https://stackoverflow.com/questions/48643379
复制相似问题