我正面临一个特殊的问题。我有一个基于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。然后,我在<pe:documentViewer>
<p:dialog>
显示PDF
问题:
在我单击浏览器上的刷新之前,流程运行正常。如果刷新页面,则会发现<p:fileUpload>
和<p:layout>
的CSS出错。 (此外,<p:fileUpload>
也停止工作。)
观察1:
当我比较HTML源代码时,在刷新前后,我看到刷新后,页面在<head>
下没有这些包含项:
<link type="text/css" rel="stylesheet" href="/javax.faces.resource/fileupload/fileupload.css.xhtml?ln=primefaces&v=6.2" />
<script type="text/javascript" src="/javax.faces.resource/fileupload/fileupload.js.xhtml?ln=primefaces&v=6.2"></script>
<link type="text/css" rel="stylesheet" href="/javax.faces.resource/layout/layout.css.xhtml?ln=primefaces&v=6.2" />
<script type="text/javascript" src="/javax.faces.resource/layout/layout.js.xhtml?ln=primefaces&v=6.2"></script>
任何想法可能是什么原因以及如何纠正它?
观察2:
Bean KWOMTesterController当前被标记为@Named
。如果我也用javax.faces.view.ViewScoped
进行注释,那么UI问题就解决了,但是<pe:documentViewer>
抱怨缺少PDF(bean有一个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>