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

thymeleaf ajax平铺中的Spring*{}字段

佟阳焱
2023-03-14

不知道有没有人能帮上忙。

我正在做一个Spring/WebFlow/Tiles/Thymeleaf项目。一切都相当顺利。我们有表示数据输入表单的瓷砖,通常如下所示:

<form th:object="${questionnaire}">
    .... 
    <select th:field="*{title}>
        <option ..... 
    </select>
    .... 
    <input th:field="*{fname}" />
    <input th:field="*{lastname}" />
    .... 
</form>

这很管用。但现在我们正在尝试为表单添加一些ajax魔法。基本上,这个想法是当按钮被按下时,它会触发一个webflow转换,这个转换将在一个平铺中呈现它的响应。这一切都运行良好...期待片段瓦片的内容。想法是新片段将是一些额外的表单字段。类似这样的事情:

<div tiles:fragment="moreDetails">
    .... 
    <input th:field="*{phone}" />
    <input th:field="*{email}" />
    .... 
</div>

webflow和tiles部分正在工作,但当thymeleaf尝试呈现tiles时,它会抱怨表单字段引用了带有*{}语法的属性,但没有用th:object封闭在表单标记中

到目前为止,我们只想出了两个变通方法。我们可以将带有th:object的表单标记放在片段平铺中,但这意味着我们在结果页面中有一个嵌套的表单:(我们发现我们可以做的另一件事是简单地用name属性而不是th:field在fraement中写入输入字段,这两个“解决方案”都感觉不对

有没有人知道有没有一个更好的,更友好的方法来做这件事?

干杯

内森

共有1个答案

闻人德庸
2023-03-14

我在thymeleaf论坛上发布了同样的问题,Tymeleaf的作者Daniel回复道:http://forum.thymeleaf.org/spring-fields-in-an-ajax-tile-td4025527.html

“th:field”实际上是一种宏,它给输入的“name”、“id”和“value”赋值。因此,如果您不能直接使用th:field,您可以将“name”和“id”赋值给一个固定值,然后将“th:value”赋值如下:

<input id="phone" name="phone" th:value="${questionnaire.phone}" />

你好,丹尼尔。

 类似资料:
  • 我正在编程一个小游戏,它是基于瓷砖的。但当我渲染它的时候,有时那些瓷砖之间的一个小空间是可见的,(绿色)背景是暴露的(可以在视频中看到)。 我想知道,是否有一些双缓冲技术,可以解决这个bug,但我读到,双缓冲已经实现了。

  • 将数组平铺到指定的深度。 使用递归,为每个深度级别 depth 递减 1 。 使用 Array.reduce() 和 Array.concat() 来合并元素或数组。 基本情况下,depth 等于 1 停止递归。 省略第二个参数,depth 只能平铺到 1 (单层平铺) 的深度。 const flatten = (arr, depth = 1) => depth != 1 ? arr.

  • 我知道有一个类似的问题,但答案不够具体,无法在我的案例中发挥作用。 我试图创建一个程序,可以显示在平铺中创建的平铺地图,并使用pytmx上传到Pygame中。我唯一的问题是在Pygame中将图像快速显示在屏幕上。 这就是我一直收到的错误:回溯(最近一次调用):文件“C:\Users\b\Desktop\Frozed Map Textures\test.py”,第32行,在screen.blit(i

  • 我找不到一种方法来以编程方式禁用Android中的快速设置,这是我们企业启动器的要求。 除了如何在Android中禁用通知栏下拉菜单之外,还有什么线索吗?和https://e2e.ti.com/support/embedded/android/f/509/t/283260 有可能吗?谢谢

  • 我想让我的libgdx地图滚动,但我不知道代码使地图滚动,请大家帮助我,我想让地图滚动像flappy bird游戏,这是我的代码,显示在屏幕上的地图 }

  • 深度平铺一个数组。 使用递归。 通过空数组([]) 使用 Array.concat() ,结合 展开运算符( ... ) 来平铺数组。 递归平铺每个数组元素。 const deepFlatten = arr => [].concat(...arr.map(v => (Array.isArray(v) ? deepFlatten(v) : v))); deepFlatten([1, [2], [[