【问题标题】:Thymeleaf: cannot pass a predefined value of hidden th:fieldThymeleaf:无法传递隐藏 th:field 的预定义值
【发布时间】:2017-06-01 11:42:17
【问题描述】:

有一个带有隐藏值字段的表单:

<input type = "hidden" th:field="*{key}" value="keyapp" />
<input type = "hidden" th:field="*{secret}" value="supersecret" />

问题是这些字段在控制器中传递为空。有没有办法通过 HTML 值中预定义的 thymeleaf 字段传递?

感谢和亲切的问候, 丹尼斯

更新:

th:object定义:

<form th:action="@{..//do-login}" method="POST" modelAttribute="authEntity" th:object="${authEntity}">

AuthEntity 类

public class AuthEntity {

    private String key;
    private String secret;
    private String scope;
    private String grantType;
    private String username;
    private String password;
    // getters & setters omitted //
}

控制器类

@RequestMapping(value = "/do-login", method = RequestMethod.POST, produces = "application/json")
public void doLogin(@ModelAttribute("authEntity") final AuthEntity authEntity,
                    final Model model, HttpServletResponse servletResponse,
                    HttpSession httpSession) throws IOException {
    log.info("Application Key: {}, Secret: {}", authEntity.getKey(), authEntity.getSecret());
}

【问题讨论】:

  • 你是如何定义表格的?你定义了什么th:object?这个对象有一个key 和一个secret 属性吗?如果您已将这些值放入 M​​odelMap 中,则应使用 ${key}${secret} 引用它们
  • @ThomasPawlitzki 见上面更新的帖子。另请注意,仅使用th:field 即可正确传递所有其他参数
  • 你设置了keysecret这两个字段吗?您如何尝试检索 MVC 处理程序中的值?
  • @ThomasPawlitzki 再次更新了帖子。请看。
  • 发送到浏览器的html中是否有值?在那里你应该看到带有值属性的隐藏字段。

标签: java spring-mvc thymeleaf


【解决方案1】:

我在隐藏输入方面遇到了同样的问题,但没有找到解决方案,但不是使用 th:field,而是手动设置字段的 'id' 和 'name' 属性并省略 th:field。

【讨论】:

  • 但是那个值是通过了吗?
  • 如果你保留'value'属性,它就会被传递(至少对我有用:))。 IIRC 在提交时会传递具有名称的表单中的所有内容,但我可能会在这里混淆名称和 ID。
  • 用春天和百里香叶?你确定吗?))
  • 是的。我的代码如下所示: 并且它被正确提交了。
  • 啊,好吧,但是如果值是 html 静态的呢?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-20
  • 1970-01-01
相关资源
最近更新 更多