2017-02-02 14 views
0

私はJSを使わずにダイナミックにしたいタイメリーフの形をしています。フォームProjectNewDtoThymeleaf:形のオブジェクトの要素の反復

public class ProjectNewDto { 

    private List<UsernameAndPps> usernamesAndPps; 

    ... 
} 

クラスのオブジェクトを記入すべきである。したがってUsernameAndPps要素のリストを保持する:

public class UsernameAndPps { 
    private String username; 
    private double pps; 

    ... 
} 

のコントローラは、モデルの属性としてオブジェクトを置くとしてusernamesAndPpsのリストをintialize単一の要素:

@RequestMapping("/projectNewPageR") 
public String projectNewPage(Model model) { 
    if(!model.containsAttribute("project")) { 
     ProjectNewDto project = new ProjectNewDto(); 
     project.setUsernamesAndPps(new ArrayList<UsernameAndPps>()); 
     project.getUsernamesAndPps().add(new UsernameAndPps("user",100.0)); 

     model.addAttribute("project",project); 
    } 
    return "views/projectNewPage"; 
} 

そして私が

としてthymeleafでそれを表示してみてください
<form id="new_project_form" action="#" th:action="@{/views/projectNewSubmit}" th:object="${project}" method="post"> 
    <div th:each="usernameAndPps : $(project.usernamesAndPps)"> 
     <input type="text" th:value="${usernameAndPps.username}"></input> 
     <input type="number" th:value="${usernameAndPps.pps}"></input> 
    </div> 
    <button type="submit" class="btn btn-lg btn-primary btn-block">Create</button> 
</form> 

私も$(usernamesAndPps)の代わり$(project.usernamesAndPps)で試してみましたが、エラーは同じまま:

Could not parse as each: "usernameAndPps : $(project.usernamesAndPps)" 

私は他のsytle関連suffの多くを削除したが、それでもいくつかの種類のエラーです。何か案は?

次のステップは、usernamesAndPpsプロパティに要素を追加するための別のボタンを追加することです。ここで肯定的にしましょう。

答えて

0

私はそれに答えますが、削除する必要があります。

中括弧の代わりに括弧

<div th:each="usernameAndPps : ${project.usernamesAndPps}">