2015-07-06 4 views
0

У меня есть динамическая форма в отчетах о яшме, и мне нужно добавить вкладку к кнопке +, которая добавляет эту форму. Конфигурации заключается в следующем:Добавить пользовательский текст в Jasper Reports dynamic

<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, поэтому моя линия может быть выключена.

Любая помощь приветствуется.

Update

Я не уверен, что теперь он должен делать с Джаспером, возможно, это 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 пунктов, которые имеют все атрибуты файла (например, id, required и т.д.)

2) страница имеет следующую строку:

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

где cc.attrs означает атрибуты, определенные в <composite:interface> тега, а newReport является поддержка боб, расширяя ADynamicForm абстрактный класс

3) ds xmln определяется следующим образом: xmlns:ds="http://java.sun.com/jsf/composite/components", поэтому мы должны смотреть на файл DynamicForm.xhtml в папке web/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> 

Надеюсь, что кто-то нашел это полезным в некотором роде, и я не просто тратил свое время :)

Смежные вопросы