2013-05-30 7 views
1

파일을 업로드하고 PrimeFaces 3.5로 선택 상자에서 하나의 매개 변수를 전달하려고합니다.PrimeFaces 파일 업로드로 백킹 빈에 값 전달

<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 그냥 loaderName에 대한 getter와 setter를 포함하는 JSF @ViewScoped 콩입니다 :

이 내 형태입니다.

내 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 항상 configurationBean에서 null입니다. 파일 업로드를 단순 모드로 전환하려고하면 파일을 configurationBean의 값으로 넣고 단일 파일을 업로드하는 명령 단추가 있으면 작동합니다. 하지만 업로드가 advanced이어야합니다. 그래서 문제는 PrimeFaces 파일 업로드 폼이 고급 모드에있는 경우 매개 변수를 백킹 빈에 전달하는 방법입니다.

답변

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