我正在使用 JBoss 7.1.1.Final、Seam 3.1、CDI、JSF 2、Primefaces 3.4RC1。我有一个包含以下 s:viewAction 的页面:
<f:metadata>
<f:viewParam name="entryId" value="#{selectedEntry}" />
<s:viewAction
action="#{entryActionManager.selectEntryById(selectedEntry)}" />
</f:metadata>
entryActionManager 是@ViewScoped,因此在加载页面时会检索entryId GET 参数,并在此@ViewScoped bean 中加载相应的条目。
此外,我在同一页面上有以下 fileUpload 组件:
<h:form id="uploadForm" enctype="multipart/form-data">
<p:fileUpload update=":files:filesTable"
fileUploadListener="#{bean.uploadFile}"
mode="advanced" sizeLimit="2000000" >
</p:fileUpload>
</h:form>
事实证明,如果我想上传文件,@ViewScoped bean 将会死掉并且 s:viewAction 会再次被执行。但是,由于某种原因,它不再具有 GET 参数(entryId),因此它失败了。
我试图设置:
<context-param>
<param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
<param-value>false</param-value>
</context-param>
但它不起作用。您知道任何解决方法吗?一种选择是使用@ConversationScoped,但我更喜欢使用@ViewScoped
谢谢