2011-11-14 66 views
0

我想通过一个棘手的问题JSTL排序的财产,希望能得到一些帮助,...JSP/JSTL解析ArrayList的传递对象

我传递一个表格对象从Spring MVC的控制器到JSP使用ModelAndView,表格对象具有一个Row对象的ArrayList,而每个对象都有一个Field对象的ArrayList。

我在控制器中填充Table对象以显示在jsp页面上,我试图弄清楚如何通过Arraylists解析来生成使用JSTL的html表格。

所以,作为一个出发点,看着表对象...

使用Spring MVC 3.0

型号:

public class Table { 

private String id; 
private ArrayList<Row> rows; 

public String getId() { 
    return id; 
} 

public ArrayList<Row> getRows() { 
    return rows; 
} 

public void setRows(ArrayList<Row> rows) { 
    this.rows = rows; 
} 

控制器:

Table table = new Table(); 
ArrayList<Row> rows = new ArrayList<Row>(); 
ArrayList<Field> fields = new ArrayList<Field>(); 

fields.add(new Field("0","test0")); 
fields.add(new Field("1","test1")); 
fields.add(new Field("2","test2")); 

Row row = new Row(); 
row.setPKValue("testPK"); 
row.setFields(fields); 
rows.add(row); 

table.setRows(rows); 
table.setId("test"); 

ModelAndView mav = new ModelAndView(); 
mav.addObject("table",table); 
mav.setViewName("healthcenter/report"); 

return mav; 

JSP文件:

<c:forEach var="row" items="${table.rows}"> 
${row.PKValue} 
</c:forEach> 

这不会产生任何输出,我期待输出行PKValue属性,不知道问题出在哪里,任何见解都会很棒!

+0

JSTL对我来说看起来不错,但是你的例子已经过于简化了,所以很难说清楚。你有没有检查你的MaV对象是通过添加一个测试字符串来传递的? $ {table.id}是否输出预期的“测试”值?您是否在HTML中获得空的或​​元素(您没有显示周围的JSP代码)?您的Row类是否为PKValue获得了一个getter(Row类未显示)? – nickdos

回答

1

假设上的方法是getPKValue,那么你需要参考它在JSP作为pKValue,不PKValue,即

${row.pKValue} 

这是该属性的可怜的名字,不过,它看起来令人困惑。我建议将它重新命名为更传统的东西,例如getId(即${row.id})或getKey(即${row.key})。