我已經成功地使用extjs將我的控制器中的文件上傳到我的ActionResponse方法中。我的問題是,extjs期待一個json響應,以便知道上傳已完成,並且我的操作請求的響應呈現出整個門戶。EXTJS和Spring MVC Portlet文件上傳
我需要一種方式來告訴響應我的請求只是一個JSON字符串。
這裏是我的控制器。
@Controller
@RequestMapping(值= 「VIEW」) 公共類MediaRoomViewController {
private static final Logger _log = Logger.getLogger(MediaRoomViewController.class);
@RenderMapping
public String renderView(RenderRequest request, RenderResponse response, Model model){
return "view";
}
@InitBinder
protected void initBinder(PortletRequest request, PortletRequestDataBinder binder) throws Exception {
// to actually be able to convert Multipart instance to byte[]
// we have to register a custom editor
binder.registerCustomEditor(byte[].class, new ByteArrayMultipartFileEditor());
// now Spring knows how to handle multipart object and convert
}
@ActionMapping(params="action=uploadFile")
public String uploadFile(FileUploadBean uploadItem, BindingResult result,ActionResponse response) throws Exception {
_log.debug("Upload File Action");
ExtJSFormResult extjsFormResult = new ExtJSFormResult();
try{
if (result.hasErrors()){
for(ObjectError error : result.getAllErrors()){
System.err.println("Error: " + error.getCode() + " - " + error.getDefaultMessage());
}
//set extjs return - error
extjsFormResult.setSuccess(false);
}
// Some type of file processing...
System.err.println("-------------------------------------------");
System.err.println("Test upload: " + uploadItem.getFile().getOriginalFilename());
System.err.println("-------------------------------------------");
//set extjs return - sucsess
extjsFormResult.setSuccess(true);
}catch(Exception ex){
_log.error(ex,ex);
}
return extjsFormResult.toString();
}
這裏是我的ExtJS的文件上傳代碼
Ext.create('Ext.form.Panel', {
title: 'File Uploader',
width: 400,
bodyPadding: 10,
frame: true,
renderTo: self._Namespace + 'file-upload',
items: [{
xtype: 'filefield',
name: 'file',
fieldLabel: 'File',
labelWidth: 50,
msgTarget: 'side',
allowBlank: false,
anchor: '100%',
buttonText: 'Select a File...'
}],
buttons: [{
text: 'Upload',
handler: function() {
var form = this.up('form').getForm();
if(form.isValid()){
form.submit({
url: self._Urls[0],
waitMsg: 'Uploading your file...',
success: function(form,action) {
alert("success");
},
failure: function(form,action){
alert("error");
}
});
}
}
}]
});
1.沒有辦法設置內容類型上的動作響應,ActionResponse的不具有反正甚至書面方式來響應的。 2.我的結果轉換爲json不是問題,我需要我的結果不呈現整個門戶封裝。 3.這不是我做出的決定,spring mvc是一個企業標準。 – user1015434
沒有意識到你正在使用一個門戶網站! – dbrin