Javascript Grails和Jasper—将输入字段值作为参数从create视图发送到报表

Javascript Grails和Jasper—将输入字段值作为参数从create视图发送到报表,javascript,jquery,grails,jasper-reports,gsp,Javascript,Jquery,Grails,Jasper Reports,Gsp,我在尝试将输入字段值发送到Jasper报表时遇到问题。我知道如何向报表发送参数,但我总是使用show.gsp视图来执行此操作,因为这样做非常简单: <g:jasperReport controller="liquidacionDeEstano" action="crearReporte" jasper="liquidacion_estano" format="PDF" name="ReporteLiquidacion${liquidacionDeEstanoInstance.lote}"&

我在尝试将输入字段值发送到Jasper报表时遇到问题。我知道如何向报表发送参数,但我总是使用
show.gsp
视图来执行此操作,因为这样做非常简单:

<g:jasperReport controller="liquidacionDeEstano" action="crearReporte" jasper="liquidacion_estano" format="PDF" name="ReporteLiquidacion${liquidacionDeEstanoInstance.lote}">
<input type="hidden" name="LIQ_SN_ID" value="${liquidacionDeEstanoInstance.id}" />
</g:jasperReport>
这是GSP表单中用于调用报告的代码:

<g:jasperReport controller="reporteLotesRecepcionados" action="crearReporte" jasper="reporte_recepcion_fechas" format="PDF" name="ReportePorFechas">
    <input type="hidden" id="ELEMENTO_1" name="ELEMENTO_1" />
    <input type="hidden" id="ELEMENTO_CLASS_1" name="ELEMENTO_CLASS_1" />
    <input type="hidden" id="FECHA_INICIAL_1" name="FECHA_INICIAL_1"/>
    <input type="hidden" id="FECHA_FINAL_1" name="FECHA_FINAL_1"/>
    <input type="hidden" id="ESTADO_LOTE_1" name="ESTADO_LOTE_1"/>
</g:jasperReport>
此自动生成代码的错误链接如下所示:

<script type="text/javascript">
    function submit_reporterecepcionfechas(link) {
      link.parentNode._format.value = link.title;
      link.parentNode.submit();
      return false;
    }
  </script>

功能提交报告接收(链接){
link.parentNode.\u format.value=link.title;
link.parentNode.submit();
返回false;
}
我不知道我做错了什么。事实上,这是我第一次尝试使用输入字段中的值作为参数生成报告

请帮我做这个


提前谢谢。

我终于解决了这个问题,但我不确定我是怎么解决的。好的,下面是我所做的:

正如您所知,自从Grails2(我认为)以来,
create.gsp
edit.gsp
视图使用了
form.gsp
。我只使用了
create.gsp
(以及相应的form.gsp)视图来获得用于生成报告的参数的输入字段。最初,我找到了代码:

<g:jasperReport controller="reporteLotesRecepcionados" action="crearReporte" jasper="reporte_recepcion_fechas" format="PDF" name="ReportePorFechas">
    <input type="hidden" id="ELEMENTO_1" name="ELEMENTO_1" />
    <input type="hidden" id="ELEMENTO_CLASS_1" name="ELEMENTO_CLASS_1" />
    <input type="hidden" id="FECHA_INICIAL_1" name="FECHA_INICIAL_1"/>
    <input type="hidden" id="FECHA_FINAL_1" name="FECHA_FINAL_1"/>
    <input type="hidden" id="ESTADO_LOTE_1" name="ESTADO_LOTE_1"/>
</g:jasperReport>

标记内。因此,作为一个实验,我尝试将用于声明输入字段的代码和用于生成报告的代码从
form.gsp
文件复制到
create.gsp
,复制到
标记之外(我不再使用
form.gsp
文件)。就这些。它现在工作得很好

正如我告诉你的,我不知道这个问题是如何解决的。可能必须在任何
标记之外添加标记

……但为什么


PD.:我创建了一个域类,以使表单能够输入将作为参数的值。大家一定认为这是完全没有必要的,拥有一个普通的HTML表单就足够了,好吧,我是Grails的新手,对不起

我知道这已经有11个月没有答案了,所以。。。 Jasper标记使用自己的表单,并且由于html禁止嵌套表单:

内容模型:流动内容,但不包含表单元素子体。 ()


Jasper文档说:“请注意,jasperReport标记不应与表单元素嵌套,因为它在实现中使用表单元素,并且不允许嵌套表单。”

感谢您的回答@JC98。是的,嵌套形式是被禁止的。
<script type="text/javascript">
    function submit_reporterecepcionfechas(link) {
      link.parentNode._format.value = link.title;
      link.parentNode.submit();
      return false;
    }
  </script>
<g:jasperReport controller="reporteLotesRecepcionados" action="crearReporte" jasper="reporte_recepcion_fechas" format="PDF" name="ReportePorFechas">
    <input type="hidden" id="ELEMENTO_1" name="ELEMENTO_1" />
    <input type="hidden" id="ELEMENTO_CLASS_1" name="ELEMENTO_CLASS_1" />
    <input type="hidden" id="FECHA_INICIAL_1" name="FECHA_INICIAL_1"/>
    <input type="hidden" id="FECHA_FINAL_1" name="FECHA_FINAL_1"/>
    <input type="hidden" id="ESTADO_LOTE_1" name="ESTADO_LOTE_1"/>
</g:jasperReport>