grails taglib从控制器获取列表
我看到多纳尔的一篇帖子,我想他也在问同样的问题,但没有真正回答这个问题,有点困惑,不知道是否可能 若我有一个标记库,那个么用户提供了我希望的控制器操作,然后它离开查询控制器并以列表的形式返回结果,我尝试了g.include,但并没有成功。我尝试在下面对此进行扩展,但不太了解,如果可能的话,可以从控制器中给定的primaryAction或def值中实际获取一个值grails taglib从控制器获取列表,grails,Grails,我看到多纳尔的一篇帖子,我想他也在问同样的问题,但没有真正回答这个问题,有点困惑,不知道是否可能 若我有一个标记库,那个么用户提供了我希望的控制器操作,然后它离开查询控制器并以列表的形式返回结果,我尝试了g.include,但并没有成功。我尝试在下面对此进行扩展,但不太了解,如果可能的话,可以从控制器中给定的primaryAction或def值中实际获取一个值 if (attrs.primaryController && attrs.primaryAction ) {
if (attrs.primaryController && attrs.primaryAction ) {
//def nlist= g.include(controller:'${attrs.primaryController}', action:'${attrs.primaryAction}', id:'${attrs?.primaryId}')
def controllerArtefact = grailsApplication?.getArtefactByLogicalPropertyName("Controller", "${attrs.primaryController}")
def controllerClass = controllerArtefact?.getClazz()
def aaa=controllerClass.declaredFields.each {
it.name=="${attrs.primaryAction}" }
println "-->"+aaa.getMetaPropertyValues().
println "-------------????? ${aaa}"
}
我还认为另一种方法可能是,加载包含taglib的gsp的控制器应该能够轻松地将列表作为变量传递给taglib,然后taglib接受attrs.newList并将其表示为list
这样做,插件抱怨没有id,这真的很奇怪,因为插件内生成的典型列表看起来完全相同。在我看来,您真正想要的是某种AJAX功能。由于taglib是在原始请求期间在服务器上执行的,因此一旦加载页面,它就无法响应用户交互。因此,您所说的处理也可以由服务该页面的控制器(在服务中)完成。但是如果您希望用户与页面交互,然后更改页面的一部分,那么您必须使用AJAX并调用另一个控制器返回“结果列表”。您不需要在标记库中调用控制器!您好,Nicdos,感谢您的反馈,尽管我怀疑这是可能的,简而言之,这是在一个插件中,最终用户可以在他们自己的项目中发送任何给定的控制器/操作。然后,提供的操作/控制器将不会呈现,而是返回一个列表。除非您的代码直接与
HttpServletRequest
交互并使用GSP呈现输出,否则您应该使用服务
。您的taglib
可以很容易地注入服务(只需在taglib顶部插入def myService
),然后它就可以生成taglib
可以呈现的结果列表(返回类型list
)。无需使用getArtefactByLogicalPropertyName
等。Thsnks Nick插件已经基于它们在gsp中调用时提供的域类完成了这项工作。这是最终用户的请求。而是通过自己的控制器提供值。所以本质上我不能注入他们的服务,因为插件已经构建好了。我试着看看Eok现在是否有可能解决这个问题-用户可以定义自己的列表并将其传递给标记库。我重新审视了这个问题,并认为这是因为我在上一次尝试中忘记了正确设置搜索/收集字段。作为0.42 AjaxDependencySelection插件的一部分支持