我有一个java支持bean有一个方法(称为getDataList()
),它返回ArrayList<MyType>
。[h ||丰富]:dataTable不迭代所有对象
在MyType.java
我有一个setters和getters负载所有这些或者分配String
s或String[]
s。 一个实例的实例化分配4个对象到ArrayList,含有(除其他)以下数据:
fid = 1 ftid = 1
fid = 2 ftid = 1
fid = 3 ftid = 1
fid = 3 ftid = 2
以我JSF代码我引用结构成富:数据表。麻烦是这样的表出来:
fid ftid
1 1
2 1
3 2 # should be 3, 1
3 2
正如你所看到的最后一次迭代是不正确的。我用h:dataTable试过了,发生了同样的情况,所以我知道它可能不是richfaces。但是通过我的Eclipse Java控制台(木卫三/ tomcat6中)显示正确的分配:
|STDOUT| 2010-02-08 15:23:58,953 | INFO | [http-8989-5]: adding ftqId 1 feedId 1
|STDOUT| 2010-02-08 15:23:58,984 | INFO | [http-8989-5]: adding ftqId 1 feedId 2
|STDOUT| 2010-02-08 15:23:59,000 | INFO | [http-8989-5]: adding ftqId 1 feedId 3
|STDOUT| 2010-02-08 15:23:59,000 | INFO | [http-8989-5]: adding ftqId 2 feedId 3
谁能告诉我如何提取我的正确ArrayList对象中的数据?我应该使用散列表吗?
根据要求这里的相关代码(感谢科林)最小的片段:
这是bean代码:
public ArrayList<MyType> getFDataList() {
XMLHandler handler = new XMLHandler();
dataList = new ArrayList<MyType>();
try {Document doc = handler.XMLDoc("Config.xml");} // catches removed
String[] fIds = handler.XMLList("//snip/fid/text()");
for (String fId : fIds) {
MyType tld = new MyType();
String[] ftIds = handler.XMLList("//snip/ftid/text()");
for (String ftId : ftIds) {
tld.setFtId(ftId);
tld.setFId(fId);
logger.info("ftId:"+ftId+",fId:"+fId);
dataList.add(tld); // each ft
}
}
return dataList;
}
这是支持类代码:
public class MyType {
private String fId;
private String ftId;
public String getFId() {
return fId;
}
public void setFId(String f) {
fId = f;
}
public String getFtId() {
return ftId;
}
public void setFtId(String fi) {
ftId = fi;
}
}
我能想到的唯一的事情就是我嵌套完成了将对象添加到ArrayList的工作,但我认为这不重要。提前致谢。
而不是解释你的代码,只是给它。 – Bozho 2010-02-08 15:43:31
我如何做到这一点当我有600个字符的评论列出它? – volvox 2010-02-08 16:12:15
“UIData”中没有这样的错误,所以填充或访问列表的方式一定是错误的。请发布SSCCE http://sscce.org(即删除所有不相关/不相关的代码混乱,直到您得到最小的可能代码片段,再现完全问题)。 – BalusC 2010-02-08 16:12:51