我有一个Grails项目,我需要发送/保存表数据。我有一个带有以下代码的控制器(没有视图)。
class JsonController {
def getCompany = {
for (String s in request.getHeaderNames()) {
println request.getHeader(s)
}
println Company.list()
render Company.list() as XML
}
def getEmployees = {
for (String s in request.getHeaderNames()) {
println request.getHeader(s)
}
render Employees.list() as XML
}
def getManagers = {
for (String s in request.getHeaderNames()) {
println request.getHeader(s)
}
render Managers.list() as XML
}
}
现在我需要在点击链接时调用/运行这些功能,然后通过电子邮件发送输出或保存到文件夹。我怎样才能做到这一点?
三江源
答案 0 :(得分:1)
注意:以下代码需要mail plugin
我会将您的JsonController
移动到我重命名为XMLService
的服务,因为这是您要返回的内容。然后,将XMLService
注入您想要使用它的任何人工制品中,例如另一个服务或控制器。
import grails.converters.XML;
class XMLService {
def getCompanies = {
return Company.list() as XML
}
def getEmployees = {
return Employees.list() as XML
}
def getManagers = {
return Managers.list() as XML
}
}
然后,在控制器或服务中。此示例使用服务:
class MyMailingService {
def mailService //<-- included from the Mail plugin
def xmlService
void sendEmployeeList(){
mailService.sendMail {
to "fred@g2one.com","ginger@g2one.com"
subject "Hello to mutliple recipients"
body xmlService.getEmployees()
}
}
}
用于存储文件,如下所示。请注意,这不一定是服务,但出于演示目的,它更容易。
class MyStorageService {
def xmlService
void storeEmployeeList(){
//It was a little unclear how you wanted to store the file, so be careful because this this does not include checks you would want to implement in production (e.g. checks for existing files, possible runtime exceptions, etc).
def f= new File('employees.txt') //see http://docs.codehaus.org/display/GROOVY/JN2015-Files
f << xmlService.getEmployees()
}
}
答案 1 :(得分:1)
注意到您有电子邮件文本文件的答案 - 这是如何存储到XML文件 其中rowid将是每个xml行的定义
def file=""${System.properties['catalina.base']}/file.xml" try { new File(file).withWriter { writer -> def xml = new MarkupBuilder( writer ) def Users = Registeration.list() xml.mkp.xmlDeclaration(version: "1.0", encoding: "utf-8") xml.rowid { Employees.each { employee -> xml.registeration(id: employee.id) { username(employee.username) //somethingelse(employee.somethingelse) } } } } } catch (Exception e) { result=e.printStackTrace() } if (result!=null) { result="all done stored in "+file }else{ result="Something has gone wrong with "+file }