2015-07-06 36 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> 

希望有人發現這種有用的方式,我不只是浪費我的時間:)

相關問題