枚举值取决于百万富翁中的控制器位置

时间:2017-12-05 11:12:46

标签: html spring spring-mvc enums thymeleaf

我的枚举:

public enum ADD_OR_EDIT {

    ADD("/user/add", "addForm"), EDIT("/user/edit", "editForm");

    private String thAction;
    private String thObject;

    ADD_OR_EDIT(String thAction, String thObject) {
        this.thAction = thAction;
        this.thObject = thObject;
    }
    //getters and setters ommited to clear view
}

我的编辑器控制器行

addAttribute("addOrEdit", ADD_OR_EDIT.EDIT);

我的控制器行添加:

addAttribute("addOrEdit", ADD_OR_EDIT.ADD);

问题是如何修复我的百万美元形式以获得价值取决于那个。

例如:

   <form action="#" th:action="(@{addOrEdit.thAction})" class="form-horizontal form-narrow" th:object="${addOrEdit.thObject}"
      method="post">

(这个没有用)

更新:

问题在于enum的第二个参数 - thObject。

补充说明:

model.addAttribute("basicForm", basicForm);
model.addAttribute("addOrEdit",ADD_OR_EDIT.ADD);

编辑:

model.addAttribute("editForm", editForm);
model.addAttribute("addOrEdit",ADD_OR_EDIT.EDIT);

也许th:object的价值是&#34; addForm&#34;而不是addForm,这会导致错误。

UPDATE2:

这个有效:

<form action="#" th:action="(${addOrEdit.thAction})" class="form-horizontal form-narrow" th:object="(${basicForm})"
      method="post">

这个也适用:

<form action="#" th:action="(${addOrEdit.thAction})" class="form-horizontal form-narrow" th:object="(${editForm})"
      method="post">

现在的情况是通过enum连接它们就像我们在thAction上所做的那样: 这不起作用:

<form action="#" th:action="(${addOrEdit.thAction})" class="form-horizontal form-narrow" th:object="(${{addOrEdit.thObject})"
      method="post">

2 个答案:

答案 0 :(得分:2)

使用columns.data代替th:action="${addOrEdit.thAction}"

<强> 更新

th:action="@{addOrEdit.thAction}"

答案 1 :(得分:1)

这实际上取决于您想要POST的信息类型。如果是某个用户pojo,那么你必须在表单中包含每个字段。基本情况看起来像这样:

<form action="#" th:action="@{${addOrEdit.thAction}}"
      class="form-horizontal form-narrow" th:object="${__${addOrEdit.thObject}__}"
      method="post">

    <!--FIELDS YOU WANT TO SUBMIT-->
    <input name="id" type="text" th:value="*{id}" hidden="hidden"/>
    <input name="name" type="text" th:value="*{name}" hidden="hidden"/>
    <input name="gender" type="text" th:value="*{gender}" hidden="hidden"/>
    <button type="submit">Submit</button>
</form>