4

我想知道是否有人可以提供帮助。

我正在开发一个 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 转换,它将在一个 tile 中呈现它的响应。这一切都很好......期待片段图块的内容。这个想法是新片段将是一些额外的表单字段。像这样的东西:

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

webflow 和 tiles 部分正在工作,但是当 thymeleaf 尝试渲染 tile 时,它​​抱怨表单字段使用 *{} 语法引用属性,但没有包含在带有 th:object 的表单标签中

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

有谁知道是否有更好、对百里香叶更友好的方式来做到这一点?

干杯

弥敦道

4

1 回答 1

2

我在百里香论坛上发布了同样的问题,百里香的作者丹尼尔回答: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}" />

问候,丹尼尔。

基本上,我已经提到的两种解决方法是实现这一目标的唯一方法。不理想(恕我直言),但至少我们有一个答案。

于 2013-01-28T20:24:34.700 回答