类型:转载 责任编辑:asp.net 日期:2007/05/23
热门软件下载:
想用Struts的Tag来做页面,头疼的是循环问题,因为我们的循环是每显示两个记录然后换行,其实就是一个表格有2列,然后就换行了,Struts的Tag能实现这样么?就是加上判断,如果还不行我就打算继续用set整个html的棒法了,不过那样实在不太好!
另外要做本地化的多语言问题,我定义了资源文件,但是如果在Action里面输出html代码,是一个字符串形式的,这个里面是没法写入资源文件的吧?写了也不生效,如果那位大侠能够输出里面都把资源文件带出去,实在佩服!
网友回答:
第一个问题也很简单
把每一行的数据存入一个bean,有多少列bean就有多少个属性。
然后把这些bean放入一个ArrayList的容器,在Struts的action内把这个容器放入request
在jsp中
<table>
<logic:iterate>
<tr>
<td><bean:write/></td>
<td><bean:write/></td>
</tr>
</logic:iterate>
</table>
具体的logic:iterate和bean:write标记的配置可以参见struts的各类资料
一个例子:
定义一个用于存放每一行数据的bean:
class Info{
private String a;
private String b;
public String getA(){
return a;
}
public void setA(String a){
this.a = a;
}
public String getB(){
return b;
}
public void setB(String b){
this.b = b;
}
}
在Action中:
Info info1 = new Info();
Info info2 = new Info();
info1.setA("zhangsan");
info1.setB("35");
info2.setA("lisi");
info2.setB("55");
ArrayList infos = new ArrayList();
infos.add(info1);
infos.add(info2);
request.setAttribute("myInfo",infos);
到jsp后:
<table>
<logic:iterate id="item" name="myInfo" type="Info">
<tr>
<td><bean:write name="item" property="a"/></td>
<td><bean:write name="item" property="b"/></td>
</tr>
</logic:iterate>
</table>
squares(Struts的垃圾Tag死也不用!)
你说2个记录就要换行,是不是说你2条记录都显示在一行里
1:你可以使用jsp的循环处理,不一定非要用tag啊
2:就是楼上写的方法,把2条记录做成一条记录,然后再循环,比如你原来100条,就作成50条,每条包含原来的2条
3:干脆一条一行,然后处理一下,分页显示得了