2014-09-25 3 views
2

Как добавить JavaScript строки в Отчет JasperReports?Как вставить JavaScript в отчет JasperReports

Я добавил статическое текстовое поле и сделал отметку в качестве HTML и вставить текст в <script></script>

Но это не отображает JavaScript при экспорте

<band height="79" splitType="Stretch"> 
    <staticText> 
     <reportElement mode="Opaque" x="0" y="0" width="555" height="79" backcolor="#EEEEEE"/> 
     <textElement markup="html"/> 
     <text><![CDATA[<script type="text/javascript">window.alert('hello');</script>]]></text> 
    </staticText> 
</band> 

Я пропускаю несколько больше атрибуты для установки? И я не могу найти конкретный документ, объясняющий, как вставить код в отчет. JavaScript. Просьба предоставить ссылку на любую документацию, если она имеется.

ответ

1

Я не думаю, что способ добавления javascript в разметку HTML будет отображаться как скрипт в экспортированном HTML. Однако я знаю альтернативный путь. Смотрите фрагмент кода ниже:

StringBuffer sbuf = new StringBuffer(); 
net.sf.jasperreports.engine.export.JRHtmlExporter exporter = new net.sf.jasperreports.engine.export.JRHtmlExporter(); 

exporter.setParameter(net.sf.jasperreports.engine.JRExporterParameter.OUTPUT_STRING_BUFFER, sbuf); 
. 
. 
. 
exporter.exportReport(); 

sbuf.append("<script type=\"text/javascript\">window.alert('hello');</script>"); 

String content = sbuf.toString(); 

Параметр OUTPUT_STRING_BUFFER посылает экспортированной выход к StringBuffer (SBUF в данном случае). Затем вы можете добавить свой сценарий к этому экспортированному HTML и, наконец, распечатать контент с использованием JSP:

<html> 
    <head> 
     <meta http-equiv='Content-Type' content='text/html; charset=UTF-8'> 
     <meta http-equiv='Content-Disposition' content='inline'> 
    </head> 
    <body> 
     <table border="0" cellpadding="0" cellspacing="0" width="100%" height="100%" style="background-color:white"> 
      <tr> 
       <td width="100%" valign="middle" align="center"> 
        <%=content%> 
       </td> 
    </body> 
</html>