2011-11-14 100 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})。