【问题标题】:Creating a report file for a questionnaire kind of application为问卷类型的应用程序创建报告文件
【发布时间】:2013-03-21 15:23:50
【问题描述】:

我们有一个应用程序,用户可以在多个页面上回答多个问题。以保险申请为例。用户会被询问个人详细信息、健康状况等。这些问题会根据之前输入的详细信息动态变化。我们需要在最后创建一个包含用户输入的所有信息的 html 文件。现在,创建这个 html 文件的最佳策略是什么?我可以创建一个带有自定义标签的 jsp 文件,该文件可以显示从 db 中提取的数据。但是我们有两个很多条件问题,它变成了维护的噩梦。另外,如果我使用 eclipse BIRT 或 jasper 报告,会变得更容易吗?

要求的一个好处是,最终页面上的界面应该看起来与问题页面上的界面完全相同。因此,我们可以使用的一种策略是捕获每个页面上输入问题和用户信息的 html,将其保存到数据库并在最后一页检索。我想知道是否有人使用这种策略。

我欢迎任何其他关于如何做到这一点的建议。谢谢!

附言- 我知道这真的不是一个编程问题,但我只是希望听到一些建议。

【问题讨论】:

  • 我对网页不太了解,但是在查找“html 文件”后,它看起来只是存储实际网页的文件。这听起来不像是存储要报告的数据的地方。您能否说明您将报告的数据实际存储在何处以及如何存储?
  • @JamesJenkins 第一段提到数据是从数据库中提取的。 HTML 文件是最终报告的格式。
  • 所以数据会从网页传输到 SQL 数据库,然后您会针对数据库运行 BIRT 或 Jasper 报告并将结果返回到网页?

标签: java jasper-reports report birt


【解决方案1】:

XML 加上 XSLT 是动态生成 HTML 的理想选择。您可以将问题和答案直接存储为 XML,或者从您的数据库生成 XML(我还没有这样做,但快速的 Google 显示了许多不同配置的选项)。

如果你的 XML 结构类似

<questionList>
<question>
<identifier>1</identifier>
<questionText>What is your first name?</questionText>
<hasAnswer>true</hasAnswer>
<answer>Mary</answer>
</question>   
<question>
...
</question>
</questionList>

然后就可以使用了

<xsl:for-each select="questionList/question">
<xsl:if test="hasAnswer=='true'">
<span> <xsl:value-of select="questionText"/></span>
<span> <xsl:value-of select="answer"/></span>
</xsl:if>
</xsl:for-each>

这将遍历您的所有问题,并且仅在有答案时才显示它们。您也可以跳过使用“hasAnswer”标签,只测试“answer”是否为空(通过测试“answer”是否不是 ' ',即空字符串),但我更喜欢上面的选项。您可以使用 span 添加您在问题页面中使用的相同 CSS,或者将所有内容放在一个表格中并使用 td 代替 - 它非常灵活。

the w3schools tutorial on XSLT,您可以阅读如何将 XSLT 样式表附加到 XML 文件,这就像在 HTML 中添加 CSS 一样简单。

当然,我已经在使用 XSLT,如果你喜欢你的锤子,每个问题看起来都像钉子。但我真的认为这是一个简单而轻松的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多