Grails’ withFormat block

March 23, 2009 by Michael

Some things are not really different in Rails and Grails world. The pendant to Rails’ respond_to method is Grails withFormat block.

Both are supposed to render a different content type as requested according to the accept header and and the format parameter.

And both fail to some extend with Internet Explorer 5.5 to 7.0. For a longer explanation see my post on respond_to linked above. In short: First visit always gave me the an Excel File, all subsequent visits the intended html page.

I used nearly the exact solution within Grails 1.0.4 as in Rails:

withFormat {
      xls {
        // Same crap with IE 6/7 as with rails, compared to
        if(params.format == 'xls') {
          def df = new SimpleDateFormat("yyyy-MM-dd")
          def report = ExcelReport.findById(params.reportId)          
          if(report == null)
            report = ExcelReport.findByBezeichnung('Absatzprognose')          
          response.contentType = 'application/'
			    response.setHeader("content-disposition", "attachment;filename=some_filenname.xls")

Grails 1.1 seems to have fixed some issues on this case and a default or empty html {} block in front of any other format like so will do the trick:

withFormat {
      html {
        // depending on your needs
      xls {
        // funny excel stuff

No comments yet

Post a Comment

Your email is never published nor shared. Required fields are marked *