4

誰か助けてくれないかしら。

Spring / Webflow / Titles/Thymeleafプロジェクトに取り組んでいます。すべてが順調に進んでいます。データ入力フォームを表すタイルがあります。通常は次のようになります。

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

これはうまく機能しています。しかし今、私たちはフォームにいくつかのajaxマジックを追加しようとしています。基本的には、ボタンが押されるとWebフロー遷移がトリガーされ、その応答がタイルにレンダリングされるという考え方です。これはすべてうまく機能しています...フラグメントタイルのコンテンツを期待してください。アイデアは、新しいフラグメントがいくつかの追加のフォームフィールドになるということです。このようなもの:

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

Webflowとタイルの部分は機能していますが、thymeleafがタイルをレンダリングしようとすると、フォームフィールドが* {}構文のプロパティを参照しているが、th:objectのフォームタグで囲まれていないと文句を言います。

これまでのところ、2つの回避策しか考えられていません。フラグメントタイルにth:objectを含むフォームタグを配置できますが、これは、結果のページにネストされたフォームがあることを意味します:(他にできることは、フレームに入力フィールドを次のように書き込むことです。 th:fieldではなくname属性両方の「ソリューション」が間違っていると感じる

これを行うためのより良い、よりタイムリーフに優しい方法があるかどうか誰かが知っていますか?

乾杯

ネイサン

4

1 に答える 1

2

同じ質問をthymeleafフォーラムに投稿したところ、thymeleafの作成者である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}" />

よろしく、ダニエル。

基本的に、私がすでに述べた2つの回避策は、これを達成するための簡単な方法です。理想的ではありませんが(IMHO)、少なくとも答えはあります。

于 2013-01-28T20:24:34.700 に答える