【发布时间】:2015-12-01 13:01:22
【问题描述】:
我有一个包含两个按钮的列表,我希望每次按下按钮时,都可以使用与该按钮关联的代码。这段代码在服务中,gsp文件是默认list.gsp
从 gsp 调用服务。我拿了这个帖子:(How do I call a Grails service from a gsp?) 来做。
问题是我在服务中有两种方法,我不知道为什么,但我总是输入 list.gsp 并且总是按下按钮,我可以在 grails 的控制台中看到显示两种方法同时起作用。
这是我每次按下按钮 A 或 B 时都可以在控制台中看到的:
2015-12-01 12:51:47,565 [http-bio-8090-exec-5]
hello
world
我想要的是,如果我按下按钮 A 显示这个:
2015-12-01 12:51:47,565 [http-bio-8090-exec-5]
hello
如果我按下按钮 B 显示:
2015-12-01 12:51:47,565 [http-bio-8090-exec-5]
world
这是我每次运行并输入 gsp.file 时都可以在控制台中看到的,我希望除非我按下按钮,否则不要运行代码:
2015-12-01 12:51:47,565 [http-bio-8090-exec-5]
hello
world
提前致谢
这是我在 gsp 中的代码:
<%@ page import="com.app.test" %>
<%@ page import="mypackage.myService" %>
<!DOCTYPE html>
<html>
<head>
<meta name="layout" content="main">
<g:set var="entityName" value="${message(code: 'licenseType.label', default: 'LicenceType')}" />
<title><g:message code="default.list.label" args="[entityName]" /></title>
</head>
<body>
<a href="#list-licenseType" class="skip" tabindex="-1"><g:message code="default.link.skip.label" default="Skip to content…"/></a>
<div class="nav" role="navigation">
<ul>
<li><g:link class="create" action="create"><g:message code="default.new.label" args="[entityName]" /></g:link></li>
<% def LicenceTypeService =
grailsApplication.classLoader.loadClass('mypackage.myService').newInstance()%>
<li><g:link action="list"><g:message code="Calculate Licence Type" args="[entityName]" /><span>${myService.calculate()}</span></g:link></li>
<li><g:link action="list"><g:message code="Re-Calculate Licence Type" args="[entityName]" /><span>${myService.recalculate()}</span></g:link></li>
</ul>
</div>
在服务中:
class MyService {
def calculate(){
println "hello"
}
def recalculate(VoiceUser vUser){
println "world"
}
}
【问题讨论】: