[英]Passing value to the backing bean with PrimeFaces file upload
我正在嘗試上傳文件並從PrimeFaces 3.5的選擇框中傳遞一個參數。
這是我的表格:
<h:form id="idAssessmentsUploadForm" enctype="multipart/form-data">
<h:panelGrid cellspacing="10" styleClass="standard-panel" columns="2" id="idAssessmentsUploadPanelGrid">
<h:outputText value="#{msg['application.assessmentsUploadRequest.loader']}"/>
<p:selectOneMenu id="idLoader"
style="width: 230px;"
required="true"
value="#{configurationBean.loaderName}">
<f:selectItems value="#{configurationBean.loaders}"/>
</p:selectOneMenu>
</h:panelGrid>
<p:fileUpload fileUploadListener="#{configurationAction.processConfigurationUpload}"
allowTypes="/(\.|\/)(gif|jpe?g|png)$/"
update="messages"
mode="advanced"/>
</h:form>
ConfiguratioBean只是一個JSF @ViewScoped
豆包含getter和setter的loaderName
。
我的ConfigurationAction bean:
@ManagedBean(name = Beans.CONFIGURATION_ACTION)
@ViewScoped
public class ConfigurationAction extends BaseAction {
public void processConfigurationUpload(FileUploadEvent event) {
ConfigurationBean configurationBean = getBean(Beans.CONFIGURATION_BEAN);
UploadedFile file = event.getFile();
addInfoMessage("Upload Successful");
}
}
我在單擊上載時收到該文件,但參數loaderName
在configurationBean
始終為null
。 如果我嘗試將文件上傳切換到簡單模式,將文件作為值放在configurationBean
並有一個命令按鈕來上傳單個文件,然后它就可以了。 但我需要上傳才能advanced
。 所以問題是如果PrimeFaces文件上傳表格處於高級模式,如何將參數傳遞給支持bean?
為此使用remoteCommand 。 例如:
<h:form id="idAssessmentsUploadForm" enctype="multipart/form-data">
<h:panelGrid cellspacing="10" styleClass="standard-panel" columns="2" id="idAssessmentsUploadPanelGrid">
<h:outputText value="#{msg['application.assessmentsUploadRequest.loader']}"/>
<p:selectOneMenu id="idLoader"
style="width: 230px;"
value="#{configurationBean.loaderName}"
required="true">
<f:selectItems value="#{configurationBean.loaders}"/>
</p:selectOneMenu>
</h:panelGrid>
<p:fileUpload fileUploadListener="#{configurationAction.processConfigurationUpload}"
allowTypes="/(\.|\/)(gif|jpe?g|png)$/"
required="true"
onstart="loadProperty()"
update="messages"
mode="advanced"/>
<p:remoteCommand name="loadProperty">
<f:setPropertyActionListener for="idLoader"
value="#{configurationBean.loaderName}"
target="#{configurationBean.loaderName}"/>
</p:remoteCommand>
</h:form>
沒有測試但應該工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.