У меня проблема с проверкой формы ajax. Я использую struts-core 2.3.1.2, struts-jquery-plugin 3.3.0 и struts-json-plugin.Struts ajax форма проверки
Проблема возникает, если форма ajax будет отправлена с помощью запроса ajax, и проверка не выполняется. Следовательно, вся форма будет помещена в элемент результата. Поэтому вы можете активировать проверку ajax на кнопке ajax sumbit. http://code.google.com/p/struts2-jquery/wiki/Validation
Здесь также устаревшая информация: http://struts.apache.org/2.2.3.1/docs/ajax-validation.html
Но перехватчик "jsonValidationWorkflowStack" отсутствует в распорок-DEFAULT.XML, как написано в сообщении: jsonValidationWorkflowStack seems to be removed in Struts 2.3.1
Он добыт из к struts- json-plugin в struts-plugin.xml. Я не знаю, как я могу использовать это непосредственно, но я построю свой стек в struts.xml:
<!-- Sample JSON validation stack -->
<interceptor-stack name="jsonValidationWorkflowStack">
<interceptor-ref name="basicStack"/>
<interceptor-ref name="validation">
<param name="excludeMethods">input,back,cancel</param>
</interceptor-ref>
<interceptor-ref name="jsonValidation"/>
<interceptor-ref name="workflow"/>
</interceptor-stack>
</interceptors>
<action name="updateMySettings" method="execute" class="de.ra.daod.actions.MyAppSettingAction">
<interceptor-ref name="jsonValidationWorkflowStack"/>
<!-- This is not beauty within ajax -->
<result name="input">/WEB-INF/jsp/mysetting_ajax.jsp</result>
<result name="success" type="stream">
<param name="contentType">text/html</param>
<param name="inputName">inputStream</param>
</result>
</action>
И моя форма выглядит следующим образом:
<s:head />
<sj:head />
<!-- This files are needed for AJAX Validation of XHTML Forms -->
<script src="${pageContext.request.contextPath}/struts/xhtml/validation.js" type="text/javascript"></script>
<s:form id="form" action="private/updateMySettings" theme="xhtml">
<s:textfield id="screenRes" key="appSetting.screenResolution" label="Screen resolution" required="true" />
<s:select key="appSetting.screenDepth" label="Color depth" list="#{'8':'8','16':'16','24':'24'}" required="true" />
<sj:submit value="Update Settings" targets="status" validate="true"/>
</s:form>
К сожалению, я получаю JavaScript ошибка, если проверка не пройдена или нет:
Uncaught TypeError: Object #<Object> has no method 'indexOf'
f.extend.ajax jquery-1.7.1.min.js:4
b.fn.ajaxSubmit
a.struts2_jquery.validateForm jquery.struts2-3.3.0.min.js:18
a.subscribeHandler.h.beforeSubmit jquery.struts2-3.3.0.min.js:18
b.fn.ajaxSubmit
a.subscribeHandler.e jquery.struts2-3.3.0.min.js:18
e.extend.each jquery-1.7.1.min.js:2
a.subscribeHandler.e jquery.struts2-3.3.0.min.js:18
f.event.dispatch jquery-1.7.1.min.js:3
f.event.add.h.handle.i jquery-1.7.1.min.js:3
f.event.trigger jquery-1.7.1.min.js:3
f.fn.extend.trigger jquery-1.7.1.min.js:3
e.extend.each jquery-1.7.1.min.js:2
e.fn.e.each jquery-1.7.1.min.js:2
f.fn.extend.trigger jquery-1.7.1.min.js:3
d.fn.extend.publish jquery.subscribe.min.js:16
e.extend.each jquery-1.7.1.min.js:2
d.fn.extend.publish jquery.subscribe.min.js:16
(anonymous function) jquery.struts2-3.3.0.min.js:18
f.event.dispatch jquery-1.7.1.min.js:3
f.event.add.h.handle.i jquery-1.7.1.min.js:3
кажется, что объект JSON из ответа не может быть обработан и я не знайте, почему причина я следовал старым инструкциям. Я предполагаю, что причиной является функция StrutsUtils.getValidationErrors из struts/utils.js, если эта функция используется с объектом json, но я не уверен. Может ли кто-нибудь помочь?
Никто не знает? Должна быть возможна проверка аякс-запросов в struts 2.3.1.2 или нет? Из-за того, что jsonValidationWorkflowStack не поддерживается новейшей версией struts, я добавил плагин struts-json-plugin 2.3.1.2, где jsonValidationWorkflowStack доступен, но существует только старое руководство с приведенным выше результатом. Может ли кто-нибудь помочь? – Caphalor40k