現在、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 が呼び出される前に、テキストフィールドにはユーザーが入力する値があります。