2011-09-21 27 views
-3

Grailsコントローラ: Domain.findByName(params.name)のような動的メソッドを呼び出すには、どうすればDomain.findByName("X")を呼び出すことができますか?変数パラメータを持つGrailsの動的メソッド呼び出し

+0

あなたはただparams.nameを書くことができます - thats it! – sbglasius

+0

パラメータに正しい値が含まれていることを確認します。例えばあなたのコントローラの最初のステートメントとしてprintln paramsを実行します。 – hitty5

+1

この質問は明確ではありません。 'Domain.findByName(params.name)'が 'assert params.name ==" X "'の場合、 'Domain.findByName(" X ")'と同じ働きをしないのはなぜですか?詳細をご記入ください。 –

答えて

1

Grails Turorialsを参照してください。より具体的には、grailsフォームタグがどのように動作するのですか。here! Grailsのパワーを楽しむために、MVCモデルの基本的な流れがどのように機能するのかを理解する必要があります。これを学ぶには時間をかけてください。そうしないと、ちょうど迷子になります。

例ではparams.nameg:textFieldのような入力タグを使用してフォームの投稿で埋められます。コーディング

あなたが特定のコントローラあなたのような何かができる呼び出しの値が含まれているのparams何のオブジェクトを表示したい場合は

....

class IceCreamController{ 

    def eatMoreIceCream = { 
     println("the params are ${params}"); //<-- prints a Map of the values to the stdout 

     if (!params.name){ 
      redirect(action:"showError",params:[message:"You have no name!"]) 
     }else{ 
      def iceCream = IceCream.findByName(params.name) 

      if (iceCream){ 
       redirect(action:"showIceCream",params:[id:iceCream.id]) 
      }else{ 
       redirect(action:"showError",params:[message:"no ice cream for name ${params.name}."]) 
      } 

     } 

    } 

} 

ハッピー!

+0

あなたの答えをありがとう。 params.nameは../book/findAuthor?name="OdysseyのようなWeb呼び出しからその値を取得します。 findAuthorメソッド内でbookControllerが... book.findByName( "Odyssey")を実行すると、authorを返しますが、book.findByName(params.name)を実行した場合は返しません!私はbook.findByName( "$ params.name")も試しました! – ncaramolegos

+0

println(params.name)を実行して、値が何であるかを確認します。 –

+0

私はそれをしました。 params.nameには期待値があります! – ncaramolegos

関連する問題