これはここでの最初の質問です。何か間違ったことをした場合は、正しい方向に向けてください。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、すべての助けをいただければ幸いです。事前に感謝します。