无法从视图中检索对象到控制器

时间:2018-01-08 11:02:01

标签: java spring spring-mvc thymeleaf

我想从视图中检索对象到控制器。问题是modeList方法中的wrapper saveMode在调试时为空。你能解释一下我做错了吗?

重要提示:在浏览器中,modeList中的对象存在于表格中。

Mode是实体表。

前端:

<table class="table table-bordered table-hover table-sm">
    <thead class="thead-default">
    <tr>
        <th th:text="stat"></th>
        <th th:text="Mode"></th>
        <th th:text="'In use'"></th>
    </tr>
    </thead>
    <tbody>
    <form th:action="@{/editMode}" method="post">
        <tr th:each="mode, stat : ${wrapper.modeList}">
            <td th:text="${stat}"></td>
            <td><input type="text" id="actAs" name="actAs" th:value="${mode.actAs}"/></td>
            <td><input type="checkbox" name="inUse" th:value="true" th:checked="${mode.inUse}"/></td>

        </tr>
        <input type="submit" name="btnSaveMode" value="Zapisz" class="btn btn-outline-success"/>
    </form>
    </tbody>
</table>

后端:

@RequestMapping("/")
public String index(Model model) {
    List<Mode> modeList = modeService.findAll();
    ModeWrapper wrapper = new ModeWrapper();
    wrapper.setModeList(modeList);
    model.addAttribute("wrapper", wrapper);

    return "index";
}

@RequestMapping(value="/editMode", method = RequestMethod.POST, params = "btnSaveMode")
public ModelAndView saveMode(@ModelAttribute("wrapper") ModeWrapper wrapper, BindingResult errors) {

    return new ModelAndView("redirect:/");
}

ModeWrapper

public class ModeWrapper {

    private List<Mode> modeList;

    public List<Mode> getModeList() {
        return modeList;
    }

    public void setModeList(List<Mode> modeList) {
        this.modeList = modeList;
    }
}

在呈现索引之前,return new ModelAndView("redirect:/")上的调试已停止。 enter image description here

1 个答案:

答案 0 :(得分:0)

不在不同的请求范围内保留模型属性。因此,在modeList视图呈现后,您将失去index的价值。如果您要在表单数据中发送,则只能在方法modeList中获取saveMode