а такжене работает обновление страницы - PullRequest
0 голосов
/ 27 сентября 2019

Я сталкиваюсь со специфической проблемой.У меня есть одностраничное приложение, основанное на SpringBoot, JoinFaces и PrimeFaces 6.2.На странице в основном есть Аккордеон с двумя вкладками.

Tab 1 - has a <p:fileUpload> //user uploads XML files using it
Tab 2 - has a <p:layout> //the selected XML file's content is displayed here, segregated into two <p:layoutunit>

После Аккордеона у меня есть панель инструментов с кнопкой отправки, с помощью которой я отправляю выбранный XML в серверную часть, которая преобразует данные XML в PDF,Затем я отображаю PDF, используя <pe:documentViewer> PrimeFaces-Extension внутри <p:dialog>

Проблема: Поток работает нормально, пока я не нажму на кнопку "Обновить" в браузере.Если я обновляю страницу, я замечаю, что CSS для <p:fileUpload> и <p:layout> работает неправильно.(Также, <p:fileUpload> перестает работать).

enter image description here enter image description here

Наблюдение 1: Когда я сравниваю исходный код HTML, до и после обновления я вижу, что после обновления на странице нет таких элементов, как <head>:

<link type="text/css" rel="stylesheet" href="/javax.faces.resource/fileupload/fileupload.css.xhtml?ln=primefaces&amp;v=6.2" />
<script type="text/javascript" src="/javax.faces.resource/fileupload/fileupload.js.xhtml?ln=primefaces&amp;v=6.2"></script>
<link type="text/css" rel="stylesheet" href="/javax.faces.resource/layout/layout.css.xhtml?ln=primefaces&amp;v=6.2" />
<script type="text/javascript" src="/javax.faces.resource/layout/layout.js.xhtml?ln=primefaces&amp;v=6.2"></script>

Любая идея, что может быть причиной этого, икак это исправить?

Замечание 2: Бин KWOMTesterController в настоящее время помечен @Named.Если я также аннотирую его с помощью javax.faces.view.ViewScoped, то проблема с пользовательским интерфейсом решена, но <pe:documentViewer> жалуется на отсутствие PDF (у компонента есть поле DefaultStreamedContent, где я храню данные PDF).

Фрагмент кода: Вот мой фрагмент XHTML:

<p:accordionPanel id="mainpanel"  activeIndex="0" binding="#{kwomTesterController.accordian}" cache="false">
    <p:tab title="Select target environment and KWOM XML">
        <p:panel>
            <p:fileUpload update=":mainform" label="Select KWOM XML"
                value="#{kwomTesterController.selectedFileName}" multiple="false" skinSimple="false" auto="true"
                fileUploadListener="#{kwomTesterController.handleUpload}" style="margin-top:20px" mode="advanced"/>
        </p:panel>
    </p:tab>

    <p:tab title="View/Edit selected KWOM XML " >
        <p:layout style="width:100%;height:360px;">
            <p:layoutUnit position="west" resizable="false" size="400" header="Configuration section">
               ...
               ...
               ...
            </p:layoutUnit>


            <p:layoutUnit position="center" header="Data section" style="overflow:hidden !important">
               <p:inputTextarea  rows="20" cols="138" autoResize="false" style="resize: none;" id="contentarea" 
                    value="#{kwomTesterController.data}" />
            </p:layoutUnit>

        </p:layout> 
    </p:tab>
</p:accordionPanel>
...