

プログラミング初心者です。

コントローラから値がうけとれません。コントローラからの値を変えても、結果は変わりなく判定もされないので、switch文がコントローラと連携が取れていない気がしますが、どうしたらいいのかわかりません。教えて頂きたいです。

[code]

    <tbody>
        <tr th:each="User:${userList}">
            <td class="text-center">
                <div th:switch="${User.plan}">
                    <p th:case="'plann'">準備中</p>
                </div>
    
                <div th:case="'Save'">
                    <a href="" '>保存</a>
                </div>
    
                <div th:case="'Submit'">
                    <a href="">提出</a>
                </div>
    
                <div th:case="'Cancel'">
                    <a href="">キャンセル</a>
                </div>
    
                <div th:case="*">
                    <a href="">参照</a>
                </div>               -->   
            </td>
    <tbody>
    
[/code]

[code]

    package com.example.demo;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    @Controller
    public class Test {
    
        @RequestMapping(value = "user")
    
        public String User(Model Model) {
    
            List<User> pro= new ArrayList<User>();
    
            Mission P = new Mission();
    
            Model.addAttribute("userList",P);
    
            return "userList.html";
        }
    
    }
    
    package com.example.demo;
    
    public class User {
    
        private String plan; 
    
        public User() {
            this.plan = "Submit";
        }
    
        public String getplan() {
            return MissionSt;
        }
    
        public void setplan(String missionSt) {
            MissionSt = missionSt;
        }
    
[/code]


CC BY-SA 4.0
2019-09-03T01:57:56.387
57783
2019-09-03T06:24:08.730
2019-09-03T02:22:11.263
3060
35696
question
thymeleaf
コントローラから値が取れなくこまってます。


いろいろと間違っていますが、1番正しくないのは`userList.html`が想定しているユーザーのリスト（`ArrayList<User>`オブジェクト）ではなく、`Mission`オブジェクトを`Model.addAttribute()`に渡していることです。

[code]

    Model.addAttribute("userList",P);
    
[/code]

少なくとも、以下です。

[code]

    Model.addAttribute("userList",pro);
    
[/code]

ただし、このように修正しても`pro`は要素数がゼロの配列なので、htmlには何も表示されません。少なくとも`pro.add(･･･);`の1行が必要です。

それからぱっと見の指摘ですが、

  * `th:switch`のタグが並列関係になっていない
  * `<tbody>`タグ、`<tr>`タグがクローズされていない
  * `<a href="" '>`のシングルクォーテーションは不要
  * `Mission`と`plan`がごちゃごちゃになっている
  * メソッド名は`getplan()`、`setplan()`ではなく、`getPlan()`、`setPlan()`
  * 変数名が分かりにくい（`List<User> pro= new ArrayList<User>();`）。なぜユーザーのリストが`pro`？
  * 変数名の先頭が大文字になっている（`Mission P = new Mission();`）。通常小文字で始めます。

などを修正する必要がありそうです。


CC BY-SA 4.0
2019-09-03T04:08:31.030
57789
2019-09-03T06:24:08.730
2019-09-03T06:24:08.730
21092
21092
57783
answer