私は ajax 呼び出しを持っています。何が起こるかというと、表示したくない「入力ファイル」をクリックする画像をクリックすることです。入力 val() が変更されると、メソッドuploadListener()
が呼び出されます。これは基本的に、サーバーにファイルを取得する ajax メソッドであり、「サーバーにアップロードする」コードは次のようになります: html:
<img id="${assayAssessRequest.id}" src="[@spring.url '/images/buttons/upload.jpg'/]" onclick="uploadFile(this);" title="Upload File" />
<form id="uploadForm" action="[@spring.url '/assay/designability/uploadFile.htm'/]" method="POST" enctype="multipart/form-data">
<div style="display: none;">
[@spring.formInput path="multiPartBean.file" fieldType="file" attributes="title='path' class='upload' accept='.txt,.csv,.zip'" /]
[@spring.formHiddenInput path="multiPartBean.fileName" attributes=" onchange='uploadListener();'class='uploadFileName'" /]
[@spring.bind "multiPartBean"/]
</div>
<input type="submit" id="uploadButton" value="upload" />
</form>
JavaScript:
function uploadFile(){
document.getElementById('inputFile').click();
}
function uploadListener(){
$('#uploadForm').attr("action","[@spring.url '/assay/designability/uploadFile.htm'/]");
alert($('#uploadForm').attr('action'));
this.document.getElementById("uploadForm").submit = true;
alert("After Submit");
return false;
}
サーバーコントローラー:
@Controller
@PreAuthorize("isAuthenticated()")
@RequestMapping("/assay/designability")
@SessionAttributes({"assayAssessmentsInitializersBean","assayAssessmentsRequestsDetailsBean"})
public class AssayDesignabilityController extends AssayBaseController {
@RequestMapping(value = "/uploadFile",method= RequestMethod.GET)
public String uploadFile(@RequestParam(value = "file")Object file){
MultipartFile multipartFile=(MultipartFile)file;
logger.info(multipartFile.getName());
return multipartFile.getName();
}
}
これをすべて行うと、応答がナンセンスになり、デバッグしようとするとコントローラーメソッドに到達しません。何か助けて??
編集: コードを更新して送信しようとしましたが、同じ動作で応答がありません。