【问题标题】:Grails dynamic method call with variable parameter带可变参数的 Grails 动态方法调用
【发布时间】:2011-09-21 07:22:02
【问题描述】:

在 Grails 控制器中: 如何调用像 Domain.findByName(params.name) 而不是 Domain.findByName("X") 这样的动态方法?

【问题讨论】:

  • 你可以写 params.name - 就是这样!
  • 确保您的参数包含正确的值。例如println 参数作为控制器动作中的第一条语句。
  • 这个问题不够清晰。如果assert params.name == "X",为什么Domain.findByName(params.name)Domain.findByName("X") 的工作方式不同。请提供更多信息。

标签: grails


【解决方案1】:

查看一些Grails Turorials,更具体地说,查看 grails 表单标签的工作原理here!您需要了解 MVC 模型的基本流程如何工作才能享受 Grails 的强大功能!花一些时间来了解这一点,否则你会迷失和沮丧。

在您的示例中,params.name 通常由使用g: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}."])
           }

       }

   }

}

编码愉快!

【讨论】:

  • 感谢您的回答。 params.name 从 ../book/findAuthor?name="Odyssey" 之类的网络调用中获取其值。如果在 findAuthor 方法中,在 bookControler 中执行 ... book.findByName("Odyssey") 它会返回作者,但如果执行 book.findByName(params.name) 则不会!我也试过 book.findByName("$params.name")!
  • 执行 println(params.name) 以查看值是什么。
  • 我做到了。 params.name 具有预期值!
  • 您可能需要提供一些额外的信息来帮助我。您能否在问题中显示您的域类控制器方法和 .gsp?
  • class Book { String title String author static constraints = { } } BookController def findByTitle = { println params println "Title = $params.Title" def book1 = Book.findByTitle("Ilias") def book2 = Book.findByTitle("$params.Title") println "Result1 = $book1.author" println "Result2 = $book2.author" } [Title:"Ilias", action:findByTitle, controller:book] Title = "Ilias " Result1 = Homer ERROR errors.GrailsExceptionResolver - 处理请求时发生异常:[GET]/TestIdeas/book/findByTitle-parameters:
猜你喜欢
  • 1970-01-01
  • 2021-08-31
  • 2021-11-30
  • 1970-01-01
  • 1970-01-01
  • 2018-04-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多