1

ファイルをアップロードして、PrimeFaces 3.5 の選択ボックスから 1 つのパラメータを渡そうとしています。

これは私のフォームです:

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

@ViewScopedConfiguratioBean は、 のgetter と setter を含む単なる JSF Bean です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常に. ファイルのアップロードをシンプル モードに切り替えようとすると、ファイルを値として入力し、単一のファイルをアップロードするコマンド ボタンが表示されます。しかし、私はアップロードする必要があります。問題は、PrimeFaces ファイルのアップロード フォームが高度なモードの場合に、どのようにパラメーターをバッキング Bean に渡すかです。nullconfigurationBeanconfigurationBeanadvanced

4

1 に答える 1

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>

テストされていませんが、動作するはずです。

于 2013-05-31T07:55:20.787 に答える