Я пытаюсь выполнить проверку AJAX на форме в Struts 2.2.1.1 с помощью jsonValidationWorkflowStack. Эта форма отправляется в порядке без AJAX; с AJAX я получаю:
java.lang.NoSuchMethodException: com ... MyAction.setDocFile ([Ljava.lang.String;)
Проблема в том, что когда клиент генерирует проверочный XMLHttpRequest, он публикует имя файла, а не фактический файл. Это заставляет Struts искать установщик строк, а не определитель файлов, который я определил. Когда я публикую эту форму с помощью обычной кнопки отправки,
Кто-нибудь есть какие-либо предложения о том, как облегчить эту проблему?
Соответствующий код для подражания. Обратите внимание, что я не выполняю проверки ниже. Я удалил проверяемые поля, поскольку они не имеют отношения к этому обсуждению.
MyAction.java
@Action(value = "doc_save", interceptorRefs = {
@InterceptorRef("fileUpload"),
@InterceptorRef("jsonValidationWorkflowStack")})
public String save() throws Exception {
// ...
}
public void setDocFile(final File docFile) {
this.docFile = docFile;
}
View.jsp
<%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" session="false"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<%@ taglib prefix="sj" uri="/struts-jquery-tags"%>
<div id="save_results"></div>
<s:form action="doc_save" method="post" enctype="multipart/form-data">
<s:file name="docFile" label="Select Document"/>
<sj:submit value="Submit" targets="save_results" validate="true"
cssClass="r-button"/>
</s:form>
<script type="text/javascript"
src="<s:url value="/struts/utils.js"/>"></script>
<script type="text/javascript"
src="<s:url value="/struts/xhtml/validation.js"/>"></script>