2014-01-16 48 views
4

我第一次使用spring mvc,並試圖在jsp中顯示和編輯結構。如何將jsp視圖中的複雜結構映射到Spring中的模型對象MVC

我有一類片段,持有型句子的對象的列表:

public class Snippet { 
    private int id; 
    private List<Sentence> sentences; 
    // getters, setters, default constructor 
} 

public class Sentence { 
    private int id; 
    private int scale; 
    private String text; 
    // getters, setters, default constructor 
} 

在我的控制,我給一個新的片斷進行編輯,當用戶點擊「保存」將其存儲到我的分貝,然後返回另一個。目前,該段的句子列表爲空:

@RequestMapping("/snippet") 
public ModelAndView getSnippet() { 
    return new ModelAndView("snippet", "snippet", snippetService.getSnippet()); 
} 

@RequestMapping("/save") 
public ModelAndView saveSnippet(@ModelAttribute Snippet snippet) { 
    if(snippet != null && snippet.getSentences() != null && !snippet.getSentences().isEmpty()) { 
    snippetService.updateSnippet(snippet); 
    } 
    return new ModelAndView("snippet", "snippet", snippetService.getSnippet()); 
} 

在我snippet.jsp我想顯示他們的規模片段的句子,並在保存,傳遞的句子和規模片斷控制器存儲:

<form:form method="post" action="save" modelAttribute="snippet"> 
    ... 
    <c:forEach var="sentence" items="${snippet.sentences}"> 
    <tr> 
     <td>${sentence.id}</td> 
     <td>${sentence.text}</td> 
     <td><input type="range" name="sentence.scale" value="${sentence.scale}" 
     path="sentence.scale" min="0" max="5" /></td> 
    </tr> 
    </c:forEach> 
    <tr> 
    <td colspan="4"><input type="submit" value="Save" /></td> 
    </tr> 

我想我必須找到正確的方式來使用路徑屬性,但我無法弄清楚。

回答

2

JSTL c:forEach標記提供了屬性varStatus,該屬性會將循環狀態暴露給指定的變量。參考varStatusindex獲取當前循環的索引,並使用該索引指定要綁定或顯示的收集項目的索引。

<c:forEach var="sentence" items="${snippet.sentences}" varStatus="i"> 
    <tr> 
     <td>${sentence.id}</td> 
     <td>${sentence.text}</td> 
     <td> 
     <form:input type="range" 
      name="snippet.sentences[${i.index}].scale" 
      path="sentences[${i.index}].scale" 
      min="0" max="5" 
      /></td> 
    </tr> 
    </c:forEach> 
相關問題