首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >胸腺叶图表单绑定

胸腺叶图表单绑定
EN

Stack Overflow用户
提问于 2015-11-25 19:29:03
回答 1查看 10.4K关注 0票数 14

db.html

代码语言:javascript
复制
<div th:each="pr, stat: *{mergeMap}">
    <tr>
        <td><input type="text" name="key" th:value="${pr.key}" /></td>
        <td><input type="text" name="value" th:value="${pr.value}" /></td>
    </tr>
</div>

在提交此输入时,我总是在Spring Controller中将mergeMap设置为空。应该怎么做才能获得mergeMap的价值?

Controller.java

代码语言:javascript
复制
@RequestMapping(value = "/shot")
    public String saveMergeProducts(@ModelAttribute(value="prod") MergedProductInfoDTO prod, BindingResult bindingResult, 
            Model model, HttpServletRequest request) {
        System.out.println(prod.toString());
        return "forward:/backoffice/db";
    }

HTML

代码语言:javascript
复制
<form action="#" th:action="@{shot}" method="POST" th:object="${prod}">
            <tr>
            <td><span th:text="${index.index}"></span></td>
                <td><input type="text" name="id" th:value="*{id}" th:readonly="readonly" /></td>
                <td><input type="text" name="categoryName" th:value="*{categoryName}" th:readonly="readonly" /></td>
                <td><input type="text" name="subCategoryName" th:value="*{subCategoryName}" th:readonly="readonly" /></td>
                <td><input type="text" name="productBrand" th:value="*{productBrand}" /></td>
                <td><input type="text" name="productSubBrand" th:value="*{productSubBrand}" /></td>
                <td><input type="text" name="series" th:value="*{series}" /></td>
                <td><input type="text" name="model" th:value="*{model}" /></td>
            </tr>
        <tr>
            <td colspan="7">
                            <tr>
                                <th>KEY</th>
                                <th>VALUE</th>
                            </tr>
                            <div th:each="pr, stat: *{mergeMap}">
                                <tr>
                                    <td><input type="text" name="mergeMapKey" th:value="${pr.key}" /></td>
                                    <td><input type="text" name="mergeMapValue" th:value="${pr.value}" /></td>
                                </tr>
                            </div>
                        </table>
                    </td>
                    <td><input type="text" name="tags" th:value="*{tags}" /></td>
                    <td><input type="submit" value="Submit" /></td>
                </tr>
EN

回答 1

Stack Overflow用户

发布于 2015-11-30 14:18:27

要访问表单支持bean的Map属性,请使用__${...}__预处理器

代码语言:javascript
复制
<div th:each="pr, stat: *{mergeMap}">
    <tr>
        <td><input type="text" name="value" th:value="${pr.key}" readonly="true"/></td>
        <td><input type="text" name="value" th:field="*{mergeMap[__${pr.key}__]}"/></td>
    </tr>
</div>

它的作用是先计算内部表达式,然后再计算整个表达式。请注意,在这种情况下,不应该修改${pr.key},以便将更新反映到绑定到表单的bean的映射属性。

参考:http://www.thymeleaf.org/doc/tutorials/2.1/thymeleafspring.html#dynamic-fields

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33915358

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档