0

コントローラは、renderメソッドの引数として表示するデータを送信できます。ビューはどのようにデータをコントローラーに送信しますか?

編集:少し明確にしましょう。

Application.showQuestion(Question q){ render(q); }

showQuestion.htmlには、質問「q」が表示され、「a」から「q」への回答を入力するためのテキストボックスがあります。フォームの送信ボタンは、メソッドcreateAnswerを呼び出します。答え「a」だけでなく、質問「q」も渡したい。createAnswer(q、a)は同じことを達成しますか?私の目的は次のことです。

a.question = q; q.addAnswer(a);

4

2 に答える 2

1

私があなたの質問を正しく理解しているかどうかは完全にはわかりませんが、うまくいけばそうです:

質問qを回答aと一緒に渡す最も簡単な方法は、事前定義されたテンプレート「フォーム」を使用することです。あなたは次のようなことをすることができます:

showQuestion.html:

#{form @Application.createAnswer(q), id:'answerForm'}
   ...
   // add input for the answer here
   ...
#{/form}

次に、Application.javaで、呼び出されるメソッドApplication.createAnswer(q、a)を定義します。したがって、フォームタグで使用される引数とフォームの入力は一緒に結合されます。実際に#{form @Application.createAnswer(q)...行うのは、送信ボタンがクリックされたときにコントローラーに渡される非表示の入力フィールドをフォームに作成することだけです。

フォームタグの詳細: playframework1.2.4のフォームタグ

私が説明したことは、playframework1.2.4に適用されることに注意してください。2.0.1でも同じように機能するかどうかはわかりませんが、(本当に)そうなることを願っています。

于 2012-05-29T05:35:56.517 に答える
1

あなたがやろうとしているのは、ユーザーが生成されたWebページをクリックするだけで適切なコントローラーを呼び出せるようにすることだと思います。

あなたが探しているものは呼ばれていますreverse routing、Playにはそのためのメカニズムがあります。ここでどのように機能するかを確認できます。次に、フォームから入力を取得しようとしている場合は、ドキュメントで詳しく説明されているように、Formオブジェクトを使用することをお勧めします。

于 2012-05-29T10:59:44.567 に答える