Никакого результата, определенного для действия после использования автозаполнения в Struts 2

Я получаю сообщение об ошибке "Нет результата, определенного для действия для ввода результата". Это не было до тех пор, пока я не использовал автозаполнение Struts2.

Это мой код автозаполнения:

<s:form role="form" theme="simple" action="Reports_open_cases">
 <h4>Open Cases</h4>

 ..some controls here

</s:form><div><code>&lt;div&gt;
 &lt;s:url id="advURL" action="xyz_action"&gt; 
&lt;sj:select id="abc" name="abc" selectboxicon="true" href="%{advURL}" list="list_abc" listvalue="name" listkey="Id " autocomplete="true" cssclass="form-control"&gt; 
&lt;/sj:select&gt;&lt;/s:url&gt;&lt;/div&gt;

&lt;div&gt;
 &lt;div&gt;
 &lt;button type="submit"&gt;Generate&lt;/button&gt;
    
 &lt;button type="Reset"&gt;Reset&lt;/button&gt;
 &lt;/div&gt;
&lt;/div&gt;</code> <p> my <code>struts.xml</code> (Действие):</p> <pre class="prettyprint linenums"><constant name="struts.devMode" value="true">
<constant name="struts.multipart.maxSize" value="20000000"> 
<package name="login" extends="struts-default,json-default" namespace="/">
 <interceptors>
 <interceptor name="loginInterceptor">
 </interceptor> 
 <interceptor-stack name="loginStack">
 <interceptor-ref name="loginInterceptor">
 <interceptor-ref name="defaultStack">
 <interceptor-ref name="fileUpload">10485760
 </interceptor-ref>
 </interceptor-ref></interceptor-ref></interceptor-stack> 

 </interceptors> 

<action name="Reports_open_cases" method="Generate_OpenCases">
 <result name="success">/CMS/Reports_OpenCases.jsp</result>
 <result name="ERROR">/Error.jsp</result> 
 <result name="input">/CMS/Reports_Menu.jsp</result>
</action> 

<action name="xyz_action" method="loadreports">
 
 </action>
</package></constant></constant>

Другие, затем заменяя выпадающий список на автозаполнение, я не внес никаких других изменений. Когда я добавляю ввод в свой struts.xml он не показывает эту ошибку. Но действие, определенное для моей формы submit, тоже не работает. Я не понимаю, где мне нужно внести изменения после добавления этого автозаполнения. Пожалуйста помоги.

1 ответ

Когда вы вызываете какое-либо действие с уровня представления, перехватчики запускаются до того, как действие выполнено.

Кажется, ваши действия используют стек по умолчанию, который включает в себя validation и перехватчики workflow. Первый перехватчик выполняет проверки действий, которые расширяют ActionSupport, второй проверяет, были ли ошибки возвращен результат INPUT.

Но если вы используете некоторые -validation.xml или проверки на основе аннотаций в классе действий, поэтому каждое действие, сопоставленное методу этого класса, проверяется вышеперечисленными перехватчиками, если вы не настроили эти перехватчики для исключения метода или не использовали префикс основанный на методе валидации, или пропустить аннотацию проверки.

Все эти случаи, чтобы избежать запуска валидаторов для кода, которые не были использованы каким-либо действием, и должны избегать их или переконфигурировать стек перехватчика, чтобы работать без этих перехватчиков.

В вашем случае действие, возвращающее результат json, не требует проверки полей, а не term. Как настроить и переопределить конфигурацию перехватчика действия, о котором идет речь: как получить результат на той же странице, почему требуется ввод? ,

Рабочий пример, который использует Select Box с результатом JSON в качестве автозапуска. Исходный код действия, используемый в примере.

licensed under cc by-sa 3.0 with attribution.