2013-05-30 47 views
1

我試圖上傳文件並從PrimeFaces 3.5的選擇框中傳遞一個參數。通過PrimeFaces文件上傳將值傳遞給後臺bean

這是我的形式:

<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豆:

@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總是從configurationBeannull。如果我嘗試將文件上載切換到簡單模式,請將該文件作爲值存儲在configurationBean中,並且有一個用於上載單個文件的命令按鈕,然後該文件正在工作。但我需要上傳到advanced。所以問題是如果PrimeFaces文件上傳表單處於高級模式,如何將參數傳遞給後備bean?

回答

3

爲此使用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> 

未測試,但應該工作。

+0

工作正常!謝謝! – user2219247

相關問題