1

現在、grails エクスポート プラグインに取り組んでいます。プラグインは、単純な list() を実行するだけで機能します。しかし、それをnamedqueryに関連付けると、もう機能しません。これはコードの一部です。:

def buildReport(){
  if(params?.format && params.format != "html"){ 
    response.contentType = ConfigurationHolder.config.grails.mime.types[params.format]
    response.setHeader("Content-disposition", "attachment; filename=report.${params.extension}")

    exportService.export(params.format, response.outputStream,Building.selectStatus(params.q).list(params), [:], [:])
  }
}

上記のコードは機能しません。このエラーがスローされます: null オブジェクトでメソッド getSuperclass() を呼び出すことはできません。スタックトレースは次のとおりです: メッセージ: null オブジェクトでメソッド getSuperclass() を呼び出せません

誰でも助けることができますか?ありがとう。

更新: list.gsp にこれがあります:

    <g:form action="list" controller="building">
    <g:select id="user" name="q" from="${myapp.Construction.list()}" optionKey="id" required="" value="${constructionId?.id}" class="many-to-one" />
    <g:submitButton name="Execute"/>
    </g:form>

そのフォームを送信すると、同じ建設 ID を持つ建物がリストまたは表示されます。そして、そのコードのどこかに:

    <export:formats
formats="['csv', 'excel', 'ods', 'pdf', 'rtf', 'xml']" action="buildReport"/>

そのコードは buildReport を呼び出します。残念ながら、buildReport を呼び出すと、select の q または params.q が null になります。

ちなみに、このコードはすべて 1 つの gsp ファイルにあり、フォームを送信すると同じ gsp が表示されます。


わかりました、私はそれがうまくいかない理由を知っていると思います。その原因は params.q の

    Building.selectStatus(params.q)

は実際には null です。なぜそれがnullなのかわかりません。パラメータを渡すために、これをlist.gspに持っています:

    <g:textField name="q" value="${params.q ?: ''}" />

では、パラメータを渡すために gsp には何が必要ですか? ここで、null であることがわかったからです。

ところで、buildReport が呼び出される前に、テキストフィールドにはユーザーが入力する値があります。

4

0 に答える 0