【问题标题】:Add custom text in Jasper Reports dynamic在 Jasper Reports 动态中添加自定义文本
【发布时间】:2015-07-06 19:46:11
【问题描述】:

我在 jasper 报告中有一个动态表单,我需要在 + 按钮上添加一个标签,以添加此表单。配置如下:

<dynamic id="improvement_notice_defect_table" required="true" label="Выявленные нарушения">
    <upload id="defect_equipment_attachment" label="Фотография нарушения"/>
    <input_area id="defect_description" label="Описание" required="true"/>
    <dynamic id="defect_std" required="true" label="Не соответствует">
        <input id="defect_std_reference_paragraph" required="true" label="Параграфу(-ам)"/>
        <menu id="defect_std_doc_name" required="true" label="Документу(-ам)"/>
    </dynamic>
</dynamic>

我尝试添加行

<label id="improvement_notice_add_label" label="Добавить нарушение" required="true"/>

但是如果我在最后一个结束标签之前添加它,它会在+ 按钮上方,并且在文本之后添加_1,如果我在标签之后添加它,它会明显低于+ 按钮。

另外,这不是我的代码,而且我对 Jasper 完全陌生,所以我的线路可能会有所偏离。

感谢任何帮助。

更新

我现在不确定它是否与 Jasper 有关,也许是 JSF?完整的配置文件如下所示

<?xml version="1.0"?>
<form name="name" prefix=":mainForm:report:dynamic:">
<!--always add dynamic to jasper_cfg file-->
    <menu id="serv_contr_out_id" label="Номер договора" required="true"/>
    <menu id="work_order_out_id" label="Номер наряда-заказа" required="true"/>
    <menu id="proj_number" label="Номер проекта" required="true"/>

    <label id="improvement_notice_doc_id" label="Уведомление о несоответствии №"/>
    <label id="improvement_notice_doc_created" label="Дата создания"/>
    <menu id="improvement_notice_recipient" label="Кому" required="true"/>
    <input_area id="improvement_notice_subject" label="Тема" required="true"/>
    <menu id="improvement_notice_defect_equipment_id" required="true" label="Наименование изделия"/>
    <upload id="improvement_notice_defect_equipment_attachment" required="true" label="Фотография изделия"/>

    <date id="improvement_notice_start_date" required="true" label="Дата составления"/>
    <date id="improvement_notice_end_date" required="true" label="Срок выполнения"/>
    <date id="improvement_notice_issue_receive_date" required="true" label="Дата принятия предписание к исполнению"/>
    <date id="improvement_notice_issue_issue_date" required="true" label="Дата выдачи предписания"/>
    <label id="improvement_notice_issue_recipient" label="Представитель завода" required="true"/>
    <menu id="improvement_notice_issue_is_notice_assigned" label="Подписано представителем завода?" required="true"/>

    <label id="improvement_notice_employee_fio" label="Специалист ТН" required="true"/>
    <upload id="improvement_notice_employee_signature" required="true" label="Подпись"/>

    <menu id="improvement_notice_resolution_employee_fio" required="true" label="Специалист ТН, закрывший предписание"/>
    <upload id="improvement_notice_resolution_employee_signature" required="true" label="Подпись специалиста ТН, закрывшего предписание"/>
    <date id="improvement_notice_resolution_resolve_date" required="true" label="Дата закрытия предписания"/>

    <upload id="improvement_notice_scan_document" anyFile="true" label="Сканированный документ"/>

    <dynamic id="improvement_notice_defect_table" required="true" label="Выявленные нарушения">
        <upload id="defect_equipment_attachment" label="Фотография нарушения"/>
        <input_area id="defect_description" label="Описание" required="true"/>
        <dynamic id="defect_std" required="true" label="Не соответствует">
            <input id="defect_std_reference_paragraph" required="true" label="Параграфу(-ам)"/>
            <menu id="defect_std_doc_name" required="true" label="Документу(-ам)"/>
        </dynamic>
    </dynamic>
    <label id="improvement_notice_add_label" label="Добавить нарушение" required="true"/>
</form>

【问题讨论】:

    标签: java jasper-reports


    【解决方案1】:

    原来是一个非常特殊的情况,因为所有这些都不是标准组件,而是来自另一个编码器的现有代码。然而,我认为互联网上对这些东西的答案越多——越好。无论如何,以防有人会发现这很有用。

    最后是这样的结构:

    1) XML 文件由ADynamicForm 类解析,所有标签都添加到Clonable 项目列表中,这些项目具有文件中的所有属性(如idrequired 等)

    2) 页面有以下一行:

    <ds:DynamicForm id="dynamic" form="#{cc.attrs.newReport}" update="#{cc.attrs.newReport.update}">
    

    其中cc.attrs 表示属性,定义在&lt;composite:interface&gt; 标记中,newReport 是支持bean,扩展ADynamicForm 抽象类

    3) ds xmln 定义如下:xmlns:ds="http://java.sun.com/jsf/composite/components",因此我们需要查看文件夹web/WEB-INF/resources/components 中的文件DynamicForm.xhtml

    4) 在该文件中有一个循环&lt;c:forEach items="#{cc.attrs.form.items}" var="item" varStatus="status"&gt;,其中cc.attrs.form 是一个类ADynamicForm,而items 是第1 点的项目列表。在该循环中有一个类似开关的东西:

    <c:when test="#{item.type eq 'DYNAMIC'}">
        <ds:Dynamic id="dynamic_#{status.index}"
            updateAction="#{cc.attrs.update}"
            dynamicItem="#{item}"
            onstart="#{cc.attrs.onstart}"
            oncomplete="#{cc.attrs.oncomplete}"/>
    </c:when>
    

    因此,现在我们需要文件web/WEB-INF/resources/components/Dynamic.xhtml

    5) 最后,在这个文件中,我们有一个循环,生成所有的输出 html 代码,循环之后是生成+ 按钮的代码:

    <p:commandButton style="margin-right: 0.15cm;" action="#{cc.attrs.dynamicItem.addLast}"
        update="containerDyna" onstart="#{cc.attrs.onstart}" title="Добавить элемент: #{cc.attrs.dynamicItem.label.toLowerCase()}"
        oncomplete="#{cc.attrs.oncomplete}" icon="ui-icon-plus" immediate="true"/>
    

    我能够像这样添加我需要的标签:

    <h:panelGroup style="padding: 10px">
        <h:outputLabel value="Добавить #{cc.attrs.dynamicItem.label.toLowerCase()}"/>
    </h:panelGroup>
    

    希望有人发现这在某种程度上很有用,我不只是浪费我的时间 :)

    【讨论】:

      猜你喜欢
      • 2012-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-28
      • 1970-01-01
      • 1970-01-01
      • 2010-09-23
      • 1970-01-01
      相关资源
      最近更新 更多