日期:2014-05-18  浏览次数:20813 次

》》拜托各位,再问一个问题,还是关于struts标签的
两个list
request.setAttribute( "la ",listA);
request.setAttribute( "lb ",listB);

la里对象的数量肯定是 <=lb内的对象的数量。
la内的对象肯定都是lb内的对象,只不过la内有的时候数量少,有的时候可能等于lb内的数量。

那么这时,我要在页面上logic:iterate。

打印出所有lb内的所有对象,并且在打印的同时,让la内的对象一个一个的跟lb内的对象比较。
如果la内的对象等于lb内的对象,那么lb打印出来的对象后边的checkbox打勾。

麻烦大家了,比较的时候我不清除,好像logic有个比较的方法。具体应该怎样写呢?谁能写下?

------解决方案--------------------
如果你的a这个list除了对比以外没有其他用处,那么就不应该这么设计,应该在action里面就比较好,给每个b中的对象增加是否选中CheckBox的标记。JSP只负责显示,这才是好的MVC实现
------解决方案--------------------
同意楼上 一般页面最好不要实现这些功能,action实现就行了,页面只循环显示
------解决方案--------------------
同意ls的
------解决方案--------------------
可以使用嵌套遍历,也就是说先遍历lb,然后在循环里面遍历la,然后在la里面用equal标签比较,如果相等则打钩,否则什么都不做就行了.

------解决方案--------------------
把la和lb的数据全部给javascript的数组.
然后用javascript控制循环把lb的数据全部生成出来。
最后循环la把,把页面中和la相等的行的checkbox打勾。
这样应该比较快,页面显示交给javascript.
------解决方案--------------------
有一个方法可以实现,不过可能会有效率问题
就是用jstl
你先迭代lb,再在lb里的一列里迭代la
例如:
<c:set var= "lbid " value= "${requestScope.list.lbid} "/>
<td>
<c:forEach var= "list " items= "la ">
<c:if test= "${la.laid == lbid} ">
checkbox
</c:if>
</c:forEach>
</td>
随手写的,不一定可以,不过方法应该是这样
------解决方案--------------------
同意用javascript的方法.
标签处理集合太麻烦,用javascript吧,给你一段代码:

<script>
var k = { "77 ": "0 ", "88 ": "1 ", "99 ": "2 "};
if( "77 " in k){
alert(1);
}
</script>

------解决方案--------------------
不走服务器,那就javascript吧,同意楼上地。
------解决方案--------------------
随手给你写了一个例子:

<%@ page language= "java " contentType= "text/html; charset=GBK "
pageEncoding= "GBK "%>
<%@ taglib uri= "http://struts.apache.org/tags-bean " prefix= "bean " %>
<%@ taglib uri= "http://struts.apache.org/tags-html " prefix= "html " %>
<%@ taglib uri= "http://struts.apache.org/tags-logic " prefix= "logic " %>
<%@ page import= "java.util.* " %>

<%
//初始化数据(实际是你action做的)
List list = new ArrayList();
list.add( "香蕉 ");
list.add( "苹果 ");
list.add( "哈密瓜 ");
list.add( "葡萄 ");
list.add( "西瓜 ");
request.setAttribute( "la ",list);

list = new ArrayList();
list.add( "苹果 ");
list.add( "葡萄 ");
list.add( "西瓜 ");
request.setAttribute( "lb ",list);
%>


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN " "http://www.w3.org/TR/html4/loose.dtd ">
<html>
<head>
<meta http-equiv= "Content-Type " content= "text/html; charset=GBK ">
<title> Insert title here </title>