当前位置: 首页 > 知识库问答 >
问题:

Spring MVC和Thymeleaf-当您迭代多个项目时,th:value和th:field之间有什么区别?

秦涵映
2023-03-14
<div th:each="item : ${courses}">
  <form th:object="${item}">
    <input th:field="*{name}" type="text" id="name" name="name" /> // error occur
  </form>
</div>
Neither BindingResult nor plain target object for bean name 'item' available as request attribute
<div th:each="item : ${courses}">
  <form th:object="${item}">
    <input th:value="*{name}" type="text" id="name" name="name" /> // ok
  </form>
</div>

我走对了吗?你能解释一下为什么吗?字段和值的区别呢?

共有1个答案

邹坚壁
2023-03-14

底线是,您只能在一个基本模型属性上同时使用th:objectth:field。这意味着在迭代时不能使用它(因为${item}在模型上不存在,它是由th:each生成的变量)。这些要求如下所示:

窗体标记中th:object属性的值必须是变量表达式(${...}),只指定模型属性的名称,而不指定属性导航。这意味着类似${seedStarter}的表达式有效,但${seedStarter.data}无效。

一旦进入

标记,就不能指定其他 th:object属性。这与HTML表单不能嵌套的事实是一致的。

 类似资料:
  • 问题内容: 我认为标题总结了这一点。我只是想知道为什么对于从Svn进行Java项目的持续集成构建而言,一个或另一个更好。 问题答案: 作为CruiseControl的长期提交者 以及 从未使用过Hudson的人,我颇有偏见,但我的看法是: Hudson的安装和运行起来非常容易(很大程度上是通过一个不错的Web界面),并且拥有一个非常活跃的插件开发社区。 CruiseControl获得了很多第三方的

  • 问题内容: 在此示例中: 无法编译为: 而被编译器接受。 这个答案说明唯一的区别是,与不同,它允许您稍后引用类型,似乎并非如此。 是什么区别,并在这种情况下,为什么不第一编译? 问题答案: 通过使用以下签名定义方法: 并像这样调用它: 在jls§8.1.2中,我们发现(有趣的部分被我加粗了): 通用类声明定义了一组参数化类型(第4.5节), 每种可能通过类型arguments调用类型参数节的类型

  • 在Azure DevOps中,我们有下载/发布构建工件任务和下载/发布管道工件任务。 构建工件任务和管道工件任务之间的区别是什么?我们什么时候会选择其中一个?

  • 我在编写一个非常庞大的mib时遇到了问题,因为我只有一个代理与许多没有snmp的设备连接。所有设备都通过推送将相同类型的数据发送到代理,然后代理将snmp陷阱发送到snmp管理器。此外,Manager正在向代理发送SNMP GET。我想编写一个标准的mib,它适用于每个设备,管理器只需发送一些OID来获取对应的值,而不是数百个OID。一个非常庞大的mib意味着有很多分支。

  • 问题内容: 我们可以使用遍历a 或a 或a 。但是只能用于遍历a ,不能遍历a 。为什么? 我知道主要的区别在于,使用迭代器,我们只能在一个方向上运行,而我们可以在两个方向上运行。还有其他区别吗?和任何优势了? 问题答案: 差异在Listdocerator的Javadoc中列出 您可以 向后迭代 随时获取迭代器。 随时添加新值。 在这一点上设置一个新值。

  • 问题内容: 今天,我按照一些说明在Linux中安装软件。有一个脚本需要首先运行。它设置一些环境变量。 指令告诉我要执行,但是我执行错误了。因此未设置环境。最后,我注意到了这一点并继续进行。 我想知道这两种调用脚本方法的区别。我对Linux完全陌生,所以请尽可能详细。 问题答案: 运行脚本,将启动一个新的运行脚本的外壳。新的外壳程序不会影响启动脚本的父外壳程序。 是的简写形式,它将在当前shell中