2013-09-23 33 views
0

我有一個Grails項目,我需要發送/保存表格數據。我有一個控制器(沒有視圖)和下面的代碼。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 
} 
} 

現在我需要調用/上點擊鏈接的運行這些功能和輸出發送直通電子郵件或保存到文件夾。我怎樣才能做到這一點?

三江源

回答

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 "[email protected]","[email protected]" 
     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

注意到你有過的電子郵件文本文件的答案 - 這是如何存儲到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 
     } 
定義