Jquery 使用多部分文件上载表单时,ModelAttribute为null
我用一个文件创建了一个表单,我想发出一个ajax请求来上传这个文件 表单:请忽略我根据不同情况动态加载div时使用的choose标记Jquery 使用多部分文件上载表单时,ModelAttribute为null,jquery,spring-mvc,Jquery,Spring Mvc,我用一个文件创建了一个表单,我想发出一个ajax请求来上传这个文件 表单:请忽略我根据不同情况动态加载div时使用的choose标记 <form:form class="form-horizontal" method="post" modelAttribute="correspondenceForm" id="correspondenceForm" enctype="multipart/form-data"> <div class="form-group">
<form:form class="form-horizontal" method="post" modelAttribute="correspondenceForm" id="correspondenceForm" enctype="multipart/form-data">
<div class="form-group">
<div id="applicationNumberDiv">
<div class="col-sm-6">
<label class="control-label">Application #</label>
<form:input type="text" id="applicationNumber" name="app" class="form-control"
value="" path="applicationNumber" />
<form:errors path="applicationNumber" cssClass="error" />
<div class="error">
<jsp:text/>
</div></div>
<div class="col-sm-6">
<label class="control-label">Jurisdiction</label>
<form:input type="text" class="form-control" value="" id="jurisdiction"
path="jurisdiction" />
<form:errors path="jurisdiction" cssClass="error" />
</div></div></div>
<div id="dynamicFields">
<c:choose>
<c:when test="${divSelector eq 1}">
<div class="form-group">
<div class="col-sm-6">
<label class="control-label">Mailing Date</label>
<div class='input-group date' id='datetimepicker1'>
<form:input type='text' class="form-control" path="mailingDate" />
<span
class="input-group-addon" >
<span class="icon icon-calendar"
data-alt="calendar">
</span></span>
</div></div>
<div class="col-sm-6">
<label class="control-label">Document code</label>
<form:input type="text" class="form-control" value="" path="documentationCode"/>
</div></div>
<div class="form-group">
<div class="col-sm-12">
<label class="control-label">Document Description</label>
<select
class="form-control" size="5">
<option
value="List of referencesList of references cited by examiner">List
of referencesList of references cited by examiner</option>
<option
value="List of References cited by applicant and considered by examiner">List
of References cited by applicant and considered by examiner</option>
<option value="Ex Parte Quayle Action">Ex Parte Quayle
Action</option>
<option value="Final Rejection">Final Rejection</option>
<option value="Non-Final Rejection">Non-Final Rejection</option>
<option value="Requirement for Restriction/Election">Requirement
for Restriction/Election</option>
<option value="Application summary of interview (PTOL-413)">Application
summary of interview (PTOL-413)</option>
<option value="Examiner initiated interview summary (PTOL-413B)">Examiner
initiated interview summary (PTOL-413B)</option>
<option value="Issue Notification">Issue Notification</option>
<option value="Notice of DO/EO Acceptance Mailed">Notice of
DO/EO Acceptance Mailed</option>
<option value="EFS Acknowledgment Receipt">EFS
Acknowledgment Receipt</option>
<option value="Notice of Allowance and fees due (PTOL-85">Notice
of Allowance and fees due (PTOL-85</option>
<option value="Specification">Specification</option>
</select>
</div></div>
<div class="form-group">
<div class="col-sm-12">
<label class="control-label">Attachment</label>
<div class="input-group">
<input id="uploadFile" placeholder="Choose File" disabled="disabled"
class="form-control" />
<div class="fileUpload btn btn-blue input-group-btn">
<span>Browse</span>
<form:input type="file" id="uploadBtn" class="upload"
path="attachment" />
</div></div></div></div>
<div class="modal-footer">
<button type="button" class="btn btn-cancel" data-dismiss="modal">Cancel</button>
<button id="submit" type="submit" class="btn btn-submit">Create</button>
</div>
</c:when>
<c:when test="${divSelector eq 2}">
<div class="modal-footer">
<button type="button" class="btn btn-cancel" data-dismiss="modal">Cancel</button>
<button type="button" class="btn btn-submit">New Application Create Request</button>
</div>
</c:when>
<c:when test="${divSelector eq 3}">
<div class="modal-footer">
<button type="button" class="btn btn-cancel" data- dismiss="modal">Cancel</button>
<button type="button" class="btn btn-submit">Create New Application</button>
</div>
</c:when>
</c:choose>
</div>
</form:form>
Ajax调用我甚至没有得到应用程序编号
$("#correspondenceForm").submit(function (e) {
e.stopPropagation();
var data = { applicationNumber:$("#applicationNumber").val() };
var json = JSON.stringify(data);
$.ajax({
url: './newCorrespondence',
type: 'POST',
data: json,
cache: false,
dataType: 'json',
processData: false,
contentType: false,
success: function(data, textStatus, jqXHR)
{
if(typeof data.error === 'undefined')
{
alert("success");
// Success so call function to process the form
console.log('SUCCESS: ' + data.success);
}
else
{
// Handle errors here
console.log('ERRORS: ' + data.error);
}
}
});
});
设置spring的登录调试,您将看到发生了什么。如果@modeldattribute方法中存在异常,则可能会导致这样的结果。请尝试。我认为在ajax调用的情况下会发生这种情况。我设法通过Multipartrequest获取文件,但没有填充modelattribute
$("#correspondenceForm").submit(function (e) {
e.stopPropagation();
var data = { applicationNumber:$("#applicationNumber").val() };
var json = JSON.stringify(data);
$.ajax({
url: './newCorrespondence',
type: 'POST',
data: json,
cache: false,
dataType: 'json',
processData: false,
contentType: false,
success: function(data, textStatus, jqXHR)
{
if(typeof data.error === 'undefined')
{
alert("success");
// Success so call function to process the form
console.log('SUCCESS: ' + data.success);
}
else
{
// Handle errors here
console.log('ERRORS: ' + data.error);
}
}
});
});