Struts2: проверка AJAX + загрузка файла - PullRequest
0 голосов
/ 28 апреля 2011

Я пытаюсь выполнить проверку 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>
...