0

簡単なドメインクラスを考えてみましょう:

class Person { String aname }

ユーザーが人を入力できるようにする gsp フォームは簡単です。

<g:form ...>
...
  someone:<input name="aname">
...
</g:form>

...そしてコントローラーに戻り、値を取得するには、次のように記述します

def p = new Person(params)

ここで、ユーザーが 2 人 (たとえば、2 人の両親) のデータを同じフォームに入力できるようにしたいと思います。これを書く方法は?2 つの入力フィールドに同じ名前を付けることはできませんが、元のプロパティ名 (「aname」) を保持しない場合は、コントローラーに戻って、名前の間のバインディングを手動で処理する必要があります。プロパティ、およびフォーム入力名:

<g:form ...>
...
  father:<input name="aname1">
  mother:<input name="aname2">
...
</g:form>

次に、コントローラーで

def p1 = new Person(); p1.aname = params.aname1
def p2 = new Person(); p2.aname = params.aname2

フォームに同じタイプのオブジェクトが複数ある場合でも、自動バインド機能を維持する方法はありますか?

4

3 に答える 3

1

このように使用してみてください:

<g:form ...>
...
  father:<input name="father.aname">
  mother:<input name="mother.aname">
...
</g:form>

そしてコントローラー:

def p1 = new Person(params.father); 
def p2 = new Person(params.mother); 
于 2013-05-06T14:51:33.440 に答える
0

I suppose you are thinking of doing something like this:

<g:form ...>
...
  father:<input name="aname">
  mother:<input name="aname">
...
</g:form>

which would result as ?aname=Dad&aname=Mom

You can handle them in controller as below:

params.list('aname').each{eachName -> //Persist each `aname`}

Have a look at Handling Multi Parameters.

于 2013-05-06T14:17:05.213 に答える