Javascript Grails和Jasper—将输入字段值作为参数从create视图发送到报表
我在尝试将输入字段值发送到Jasper报表时遇到问题。我知道如何向报表发送参数,但我总是使用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}"&
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>