2011-07-25 12 views
0

私はフォームにいくつかのデータをキャプチャした後、ユーザーがHTMLレポートボタンと別のボタンを生成すると "generatehtmlreport"このボタンをクリックするとコントローラアクション "generatepdfreport"が実行され、主なものはhtmlレポートデータが表示されないことです。2つの送信ボタンを持つフォームをgrailの2つの異なるコントローラアクションにサブミットする方法

<g:form> 
    // your fields 
    <g:actionSubmit action="generateReport" value="Genereate Report" /> 
    <g:actionSubmit action="exportAsPDF" value="Export as PDF" /> 
</g:form> 

答えて

3

を持ってg:actionSubmitタグを使用してフォームがあります。私はRemoteLinkタグを使用したのと同じ形式で異なるAjaxのアクションを呼び出すには:

<g:form> 
    // your fields 
    <g:remoteLink action="generateReport" >Genereate Report</g:remoteLink> 
    <g:remoteLink action="exportAsPDF" >Export as PDF</g:remoteLink> 
</g:form> 

はRemoteLinkの他のプロパティと例については、Grailsのドキュメントを参照してください。

+0

「PDFとしてエクスポート」ボタンをクリックした後、PDFではないジャンク値が表示されています。この「pdfとしてエクスポート」リクエストをajax呼び出しにします。 – n92

+0

"pdfとしてエクスポート"をクリックすると、表示されたhtmlレポートは表示されません.itsはそこにあるはずですが、これをajaxを使用して独立した呼び出しとしてpdfファイルを生成するcllコントローラメソッドに "pdfとしてエクスポート" – n92

0

あなたの元の質問には、フォームがAjax呼び出しであることを提出したかっ指定されていませんでした。ここで私は

<g:form name = "report_generation" id ="report_generation"> 
    <input type = "hidden" name = "report_type" class = "report_type" value = "${reportType}"/> 
    <fieldset> 
     <legend class="form_legend">${reportTitle}</legend> 
     <div class="dialog"> 
     <g:render template="/templates/filterTemplate" /> 
      <div class="cb"></div> 
     </div> 
    </fieldset> 
    <div id = "report_buttons"> 
     <input type = "submit" value = "Generate Report" class="td_link" name ="generate_report_html_btn" id = "generate_report_html_btn"/> 
     <input type = "submit" value = "Export as PDF" style="display:none" class="td_link pdf_button" name ="generate_report_pdf_btn" id = "generate_report_pdf_btn"/> 
    </div> 
</g:form> 

<div id = "html_report_section"></div> 
関連する問題