car*_*tor 42
最好使用标记库,因为通过类加载器直接在视图中创建服务实例不会自动发送可能存在于您尝试使用的服务中的其他声明的服务.
使用标记库,您将自动连接这些服务.
在你的gsp视图中 <g:customTag param1="$modelObjec" param2="someString" />
在你的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"
}
}
Run Code Online (Sandbox Code Playgroud)
你的MyService:
package com.something
class MyService {
def anotherService // This will be auto-wired
def method() {
anotherService.anotherMethod()
}
}
Run Code Online (Sandbox Code Playgroud)
Sug*_*lai 31
试试这个 - 非常有帮助
%{--Use BlogService--}%
<g:set var="blog" bean="blogService"/>
<ul>
<g:each in="${blog.allTitles()}" var="title">
<li>${title}</li>
</g:each>
</ul>
Run Code Online (Sandbox Code Playgroud)
这也不是一个推荐的东西,你总是可以使用taglib
Dav*_*ulo 22
我认为最好的方法是:
<%
def myService = grailsApplication.mainContext.getBean("myService");
%>
Run Code Online (Sandbox Code Playgroud)
这样,您可以获得服务实例而不会丢失自动服务的服务.
fab*_*474 12
<%@ page import="com.myproject.MyService" %>
<%
def myService = grailsApplication.classLoader.loadClass('com.myproject.MyService').newInstance()
%>
Run Code Online (Sandbox Code Playgroud)
然后你可以调用${myService.method()}你的gsp视图
请注意,从视图调用事务服务方法会损害性能.最好将所有事务性服务方法调用移动到控制器(如果可以)
| 归档时间: |
|
| 查看次数: |
29253 次 |
| 最近记录: |