Перезагрузите компоненты калитки после события нажатия кнопки, используя AJAX - PullRequest
0 голосов
/ 26 марта 2019

Я использую компоненты калитки здесь.Мой взгляд как ниже.

enter image description here

Мне нужно заново сгенерировать отчет и перезагрузить фрейм отчета нажатием кнопки (GO).Но этот div не перезагружается, даже если я заменил старый элемент новым элементом отчета.Может ли кто-нибудь помочь мне с этим?

form.add(new AjaxLink<Void>("goLink") {
        @Override
        public void onClick(final AjaxRequestTarget target) {
            System.out.println(reportType+"go button clicked");
            final IResourceStream stream = renderItems();
            //generate report and create a new component using that.
            Component component = new AIAIframe("reportFrame", stream);
            component.setOutputMarkupId(true);
            this.addOrReplace(component);
            System.out.println("new framwe added reportframe");
        }
    });
    add(form);

Пожалуйста, найдите markup.html ниже

<wicket:extend>
<div style="margin-left:3%;">
    <form wicket:id="form">
        <span>
            <h4>Report Erscheinung Auswahl</h4>

            <select wicket:id="chooseType" style="margin-left:5%;">
            <option>Kostenvoranschlag</option>
            <option>Aufträge</option>
            <option>Rechnungen</option>
        </select>
        </span>
        <span>
            <a href="#" class="downloadLink" wicket:id="goLink">GO</a>
        </span>
    </form>
</div>
<br>
<style>
    a.downloadLink {
      width: 115px;
      height: 25px;
      background: #4E9CAF;
      padding: 6px;
      text-align: center;
      border-radius: 5px;
      color: white;
      font-weight: bold;
    }
    .aia-center {
       margin:0 auto;
       padding: 6px;
    }
</style>
<div class="aia-center">
    <span>Download as: </span>
    <select wicket:id="formatSelect">
    </select>
    <a href="#" class="downloadLink" wicket:id="downloadLink">Download</a>
</div>
<span style="height: 100%; width: 100%" wicket:id="reportFrame"></span>

1 Ответ

0 голосов
/ 26 марта 2019

Вам нужно позвонить target.add(component), если вы хотите, чтобы этот component был повторно обработан с ответом Ajax.

Поскольку вы воссоздаете компонент с помощью wicket: id = "reportFrame", вам необходимо убедиться, что изначально отрендеренный (до запроса Ajax) также имел .setOutputMarkupId(true), чтобы логика Ajax могла найти его в браузере. DOM и замените его новым.

...