Spring boot Spring中的可编辑表
作为一名后端程序员,我很少处理web方面的事情。因此,至少可以说,我对框架的总体理解,特别是对Thymeleaf的理解相对简单化了。但现在我需要创建一个基本的,但希望仍然是体面的网站来维护一个数据库。这是一个非常小的模式,仅由内部用户更新。因此,它不必面向客户,也不必对所有攻击者进行打磨或加固。我的程序员仍然希望它不仅仅是垃圾 我认为最好是一个表示数据库行的html表——DUH。但是我希望整个表都是可编辑的,而不是让我编写代码,然后用户单击各个行进行编辑 很久以前,我用JQuery做了类似的事情。我还记得JQuery最适合那些知道自己在做什么的人。因此,我试图以较少的复杂性来实现这一点。我希望仍然使用Thymeleaf,至少让事情变得有趣一点 这就是我的知识搁浅的地方。我不知道如何访问数据 由于对表的大小进行一些限制似乎是个好主意,因此我的SpringMVC控制器返回一个包含检索到的模型对象的页面对象。因此,我的回答如下: 厚颜无耻地复制示例在表格中显示模型是微不足道的Spring boot Spring中的可编辑表,spring-boot,spring-mvc,thymeleaf,Spring Boot,Spring Mvc,Thymeleaf,作为一名后端程序员,我很少处理web方面的事情。因此,至少可以说,我对框架的总体理解,特别是对Thymeleaf的理解相对简单化了。但现在我需要创建一个基本的,但希望仍然是体面的网站来维护一个数据库。这是一个非常小的模式,仅由内部用户更新。因此,它不必面向客户,也不必对所有攻击者进行打磨或加固。我的程序员仍然希望它不仅仅是垃圾 我认为最好是一个表示数据库行的html表——DUH。但是我希望整个表都是可编辑的,而不是让我编写代码,然后用户单击各个行进行编辑 很久以前,我用JQuery做了类似的事情
<tr th:each="restProvider : ${providerPage.content}">
<td th:text="${restProvider.enabled}" />
我试过其他一些方法。包括搞乱迭代器的指定方式。但他们中没有一个能摆脱多余的“.”
编辑2
添加了表单信息这里的问题是表达式*{restProvider.enabled}试图解析为
providerPage.restProvider.enabled
,这当然不是真实的。使用字段表达式时,不能使用由th:each
或th:with
创建的临时变量。您已经构建了一个解析为表单th:object
的完整表达式。试试这个:
<tr th:each="restProvider, i : ${providerPage.content}">
<td>
<input type="text" th:field="*{content[__${i.index}__].enabled}" />
这将解析为一个表达式,如
providerPage.content[0]。enabled
这里的问题是表达式*{restProvider.enabled}
正在尝试解析为providerPage.restProvider.enabled
,这当然不是一个真实的表达式。使用字段表达式时,不能使用由th:each
或th:with
创建的临时变量。您已经构建了一个解析为表单th:object
的完整表达式。试试这个:
<tr th:each="restProvider, i : ${providerPage.content}">
<td>
<input type="text" th:field="*{content[__${i.index}__].enabled}" />
这将解析为类似于
providerPage.content[0]的表达式。已启用
非常感谢!这让我走得更远。但不完全是这样。根据我的更新有什么想法吗?真的没什么可看的了。我添加了表单的其余部分,只保留了列标题。以及所有其他尚未转换为输入的字段。但这确实是全部。您有th:object=“${providerPage.content}”
——这不是一个有效的对象。根据文档:表单标记中th:object属性的值必须是变量表达式(${…}),只指定模型属性的名称,而不进行属性导航。
必须使用th:object=“${providerPage}”
就像您在开始时使用的那样,th:field=“*{content[\uu${i.index}}].enabled}”
作为字段。抱歉。这现在开始有意义了。谢谢非常感谢!这让我走得更远。但不完全是这样。根据我的更新有什么想法吗?真的没什么可看的了。我添加了表单的其余部分,只保留了列标题。以及所有其他尚未转换为输入的字段。但这确实是全部。您有th:object=“${providerPage.content}”
——这不是一个有效的对象。根据文档:表单标记中th:object属性的值必须是变量表达式(${…}),只指定模型属性的名称,而不进行属性导航。
必须使用th:object=“${providerPage}”
就像您在开始时使用的那样,th:field=“*{content[\uu${i.index}}].enabled}”
作为字段。抱歉。这现在开始有意义了。谢谢
Bean property 'content.[0]' is not readable or has an invalid getter method
<tr th:each="restProvider, i : ${providerPage.content}">
<td>
<input type="text" th:field="*{content[__${i.index}__].enabled}" />