2013-09-23 2 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 
} 
} 

Теперь мне нужно вызвать/запустить эти функции на нажатие на ссылку и отправить вывод через электронную почту или сохранить в папку. Как я могу это сделать?

Thankyou

ответ

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 
     } 
Смежные вопросы