que plugin org homepage example descargar grails service view gsp

plugin - ¿Cómo llamo a un servicio de Grails desde un gsp?



que es grails (4)

Creo que la mejor manera de hacerlo es:

<% def myService = grailsApplication.mainContext.getBean("myService"); %>

De esta forma, obtienes la instancia de servicio sin perder los servicios de autoconexión.

¿Cómo puedo invocar un servicio directamente desde una vista? Estoy intentando con ${my.domain.service.method} , pero se queja de que no puede encontrar la propiedad.

Y no, no quiero usar un controlador porque la vista es una plantilla.


Es mejor utilizar la biblioteca de etiquetas porque la creación de una instancia de servicio directamente en la vista a través del cargador de clases NO AUTONIZARÁ el autoenchufe de otros servicios declarados que puedan residir en el servicio que está tratando de usar.

Al usar la biblioteca de etiquetas, tendrá un auto-cableado de esos servicios.

En su vista de <g:customTag param1="$modelObjec" param2="someString" />

En su carpeta taglib ( yourApp/grails-app/taglib/com/something/MyAppTagLib ):

package com.something class MyAppTagLib { def myService // This will be auto-wired def customTag = { attribs -> def modelObj = attribs[''param1''] def someString = attribs[''param2''] // Do something with the params myService.method() out << "I just used method of MyService class" } }

Su MyService:

package com.something class MyService { def anotherService // This will be auto-wired def method() { anotherService.anotherMethod() } }


Prueba esto, mucha ayuda

%{--Use BlogService--}% <g:set var="blog" bean="blogService"/> <ul> <g:each in="${blog.allTitles()}" var="title"> <li>${title}</li> </g:each> </ul>

Referir esto

Además, esto no es una cosa recomendada, siempre puedes usar taglib


<%@ page import="com.myproject.MyService" %> <% def myService = grailsApplication.classLoader.loadClass(''com.myproject.MyService'').newInstance() %>

Y luego puedes llamar ${myService.method()} en tu vista de gsp

Tenga en cuenta que llamar a los métodos de servicio transaccional desde vistas perjudica el rendimiento. Mejor mover todas las llamadas de método de servicio transaccional al controlador (si puede)