0

これはここでの最初の質問です。何か間違ったことをした場合は、正しい方向に向けてください。spring webflowフロー内でuploadifyフラッシュベースのマルチファイルアップローダーを使用しようとしているときに、いくつかの問題が発生しています。ケースの詳細な説明は次のとおりです。

私が使用しているライブラリのバージョンは次のとおりです。

spring-webflow 2.3.2 spring-web 3.2.1 springwebmvc 3.2.1 Uploadify v3.2 commons-fileupload 1.2.2 commons-io 2.4 commons-codec 1.8 Apache タイル 3.0.1

ウェブフロー設定

    <webflow:flow-executor id="flowExecutor">
    <webflow:flow-execution-listeners>
        <webflow:listener ref="loggingFlowExecutionListener" />
    </webflow:flow-execution-listeners>
    <!-- max execution sayisina ciktiktan sonra mevcut execution'larin hepsini kill ediyor -->
    <webflow:flow-execution-repository max-executions="10" />
</webflow:flow-executor>

<webflow:flow-registry id="flowRegistry" base-path="/WEB-INF/views" flow-builder-services="flowBuilderServices">
    <webflow:flow-location-pattern value="/**/*-flow.xml" />
</webflow:flow-registry>

<webflow:flow-builder-services id="flowBuilderServices" view-factory-creator="mvcViewFactoryCreator" development="true" />

<bean id="mvcViewFactoryCreator" class="org.springframework.webflow.mvc.builder.MvcViewFactoryCreator">
    <property name="viewResolvers">
        <list>
            <ref bean="tilesViewResolver" />
        </list>
    </property>
</bean>

<bean id="loggingFlowExecutionListener" class="com.ilanus.demo.web.config.LoggingFlowExecutionListener" />

フロー定義

    <on-start>
    <evaluate expression="advertisementCreationController.initializeAdvertismentForm(flowScope.advForm)" result="flowScope.advForm" />
    <evaluate expression="uploadNgController.initializeUploadBean()" result="flowScope.uploadBean"></evaluate>
</on-start>

<view-state id="cadv1" view="cadv1" model="advForm">
    <transition on="next" to="cadv2">
        <evaluate expression="advertisementCreationController.initializeCriterias(flowScope.advForm)" />
    </transition>
    <transition on="cancel" to="home" />
</view-state>

<view-state id="cadv2" view="cadv2" model="advForm">
    <transition on="previous" to="cadv1" />
    <transition on="next" to="cadv3">
        <evaluate expression="advertisementCreationController.adjustCheckBoxValues(flowScope.advForm, requestParameters)"></evaluate>
    </transition>
    <transition on="cancel" to="home" />
</view-state>

<view-state id="cadv3" view="cadv3" model="uploadBean">
    <transition on="previous" to="cadv2" />
    <transition on="next" to="cadv4" />
    <transition on="cancel" to="home" />
</view-state>

今、cadv3 ビューで私は uplodify 統合を持っています。すべての必要な js、css などのライブラリがページに配置され、ファイルをアップロードするために uploadify によって使用される form:form タグがあります。ここにcadv3.jspがあります:

    <div class="createAd2-fileUploadArea">
    <form:form modelAttribute="uploadBean" method="POST" enctype="multipart/form-data">
        <input id="file-upload" type="file"/>
        <input name="dummy" value="someValue" type="text">
    </form:form>
    <span class="createAd2-startUpload">Yüklemeyi Başlat</span>
</div>

そして、uploadify を初期化するための JavaScript コードは次のとおりです。

            $('#file-upload').uploadify(
                {
                    'swf' : fileUploadScriptBaseUrl + '/uploadify.swf',
                    'uploader' : '/fileUpload',
                    'multi' : true,
                    'auto' : false,
                    'cancelImg' : imageBaseUrl + '/uploadify-cancel.png',
                    'buttonText' : 'Resim Ekle',
                    'fileSizeLimit' : '120KB',
                    'fileTypeExts' : '*.gif; *.jpg; *.jpeg; *.png',
                    'uploadLimit' : 10,
                    .
                    .
                    .
        });

/fileUpload url を処理するコントローラー:

@RequestMapping(value = "/fileUpload", method = RequestMethod.POST)
public @ResponseBody
String Uploadcreate(UploadBean uploadBean, BindingResult result, HttpServletRequest request, HttpServletResponse response,
        MultipartRequest multipartRequest) {
    System.out.println("started uploading..");
    .
    .
    .
}

および UploadBean:

public class UploadBean implements Serializable{

private static final long serialVersionUID = -4487086999401144339L;

private CommonsMultipartFile filedata;
private String name;
private String dummy;

public CommonsMultipartFile getFiledata() {
    return filedata;
}

public void setFiledata(CommonsMultipartFile filedata) {
    this.filedata = filedata;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getDummy() {
    return dummy;
}

public void setDummy(String dummy) {
    this.dummy = dummy;
}

}

ここでの問題は、uploadify 送信によって UploadBean のファイルデータが入力されないことです。すべてのフィールドがnullです。(ダミーフィールドはテスト目的のためだけにあります)フロースコープ変数(flowScope.uploadBean)をフォームmodelAttribute値として使用するのは間違っていますか?または、webflowフロー内でajax送信(uploadifyがファイル入力AFAIKを送信するためにajax呼び出しを行う)を行うことは禁止されていますか?

ちなみに、ここで説明されているように、Spring MVC のみの環境で Uploadify を使用できます: http://springsourcery.org/springSourcery/content/viewContent,1,32.html?random=4063 おそらく、Spring に関連する何か間違ったことをしています。 webflow、すべての助けをいただければ幸いです。事前に感謝します。

4

1 に答える 1