Grails:无法从控制器获取要查看的模型数据

Grails:无法从控制器获取要查看的模型数据,grails,grails-controller,Grails,Grails Controller,在过去的3周里,我一直在使用Grails(学习和工作)。我一直致力于将JSP/Servlet应用程序移植到Grails,移植该应用程序绝对“有趣” 我面对一个问题,一直在寻找,阅读,但还不能解决它 在GSP页面中,我有一个文本字段和搜索按钮,用户在其中输入ProductID。我有一个控制器,当单击搜索按钮时,jQueryAjax方法会调用该控制器 // ----- Part of jQuery Ajax call --- $.ajax({ type : "post",

在过去的3周里,我一直在使用Grails(学习和工作)。我一直致力于将JSP/Servlet应用程序移植到Grails,移植该应用程序绝对“有趣”

我面对一个问题,一直在寻找,阅读,但还不能解决它

在GSP页面中,我有一个文本字段和搜索按钮,用户在其中输入ProductID。我有一个控制器,当单击搜索按钮时,jQueryAjax方法会调用该控制器

// ----- Part of jQuery Ajax call --- $.ajax({ type : "post", url : '/${grailsApplication.metadata['app.name']}/product/checkProductAjax', data : "pid="+proID, // ----- Contoller code----- class ProductController { def scaffold = true def checkProductAjax = { def product= Product.findByProductId(params.pid) if(product) { [product: product] // model to get data in GSP page. render(product.toString() + ":" + product.id) } else { render("none") } } } //----jQuery Ajax调用的一部分--- $.ajax({ 类型:“post”, url:'/${grailsApplication.metadata['app.name']}/product/checkProductAjax', 数据:“pid=“+proID, //----控制器代码----- 类ProductController{ def scaffold=true def checkProductAjax={ def product=product.findByProductId(参数pid) if(产品){ [product:product]//用于在GSP页面中获取数据的模型。 呈现(product.toString()+“:”+product.id) }否则{ 呈现(“无”) } } } Ajax调用,一切正常。我面临的问题是如何将模型(即产品数据返回到GSP页面,即[Product:Product],并在GSP中显示,例如,产品名称:${Product}

如何使其工作?我已经阅读了一些示例,其中提到只需设置模型[product:product]将有助于获得GSP中的数据

产品名称:${Product}在GSP页面中始终显示空白产品名称:

请告诉我我做错了什么

干杯!
Jay Chandran

您可能希望使用为这类工作创建的grails标记;它为您包装了AJAX代码


[product:product]
呈现(product.toString()+”:“+product.id)
不兼容。当您看到控制器操作的最后一行是类似
[product:product]
的映射时,这是隐式返回值,因为它是操作闭包的最后一条语句-它相当于
返回[产品:产品] 。但是如果在方法的中间有一个地图,它只是被创建和丢弃,它相当于

def ignoreThisMap = [product: product]
// other code
但是,由于您正在进行Ajax调用,因此将产品放入模型是没有意义的,因为您不会重新呈现GSP。您将呈现文本、JSON、XML或客户端JavaScript将用于更新html子集的某些其他内容。因此,您可能希望更接近这些内容

if (product) {
   render product as JSON
}
else {
   render "none"
}

然后,您可以使用jQuery或Prototype来评估JSON并提取JavaScript中的数据。

Hi,谢谢您的提示。我应该考虑一下。:)我现在将产品呈现为JSON,并在页面中使用jQuery获得所需的值!非常感谢……:)