2015-07-06 37 views
0

我在jasper报告中有一个动态表单,我需要为+按钮添加一个标签,即添加此表单。该配置如下:在Jasper Reports中添加自定义文本动态

<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完全陌生,所以我的线路可以关闭。

任何帮助表示赞赏。

更新

我不知道现在有碧玉做的,也许是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> 

回答

0

原来是一个非常特殊的情况下,这一切是不是标准的组成部分,但是从另一个编码器现有的代码。然而,我认为互联网上的这些东西越多,答案就越好。无论如何,如果有人会发现这种方式有用。

的尽头,有这样的结构:

1)的XML文件是由ADynamicForm类解析和所有标签加入到Clonable项目,这都从文件属性的列表(如idrequired等)

2)页具有下列行:

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

其中cc.attrs装置的属性,在<composite:interface>标签定义,且newReport作为支持bean,延伸ADynamicForm抽象类

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

4)在该文件中有环路<c:forEach items="#{cc.attrs.form.items}" var="item" varStatus="status">,其中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> 

希望有人发现这种有用的方式,我不只是浪费我的时间:)

相关问题