2010-09-29 2 views
0

Я сделал несколько страниц с Struts 2. (Проект J2EE) Все было нормально, пока я не попытаюсь добавить перехватчик.Struts2: перехватчик и параметры

Кажется, что перехватчик удалить все свойства моего класса действий и параметры отправку по Jsp с URL, как: действий пары = хой

здесь перехватчик:

public class SessionInterceptor extends AbstractInterceptor{  
    @Override 
    public String intercept(ActionInvocation invocation) throws Exception { 

     return invocation.invoke();  
} 

вот struts.xml:

<action name="movefc_ShowFjt" class="struts2.ShowFjtAction" method="movefc"> 

     <interceptor-ref name="sessionInterceptor"></interceptor-ref> 
     <result name="input" type="dispatcher">jsp/showFjt.jsp</result> 
     <result name="success" type="dispatcher">jsp/showFjt.jsp</result> 
    </action>  

в действии класса,

public class ShowFjtAction extends ActionSupport { 


private String param; 
private Personne p; 

Свойство param никогда не получает значения из jsp (это нормально, когда перехватчик выключен). Хуже того, другие свойства в действии класса, похоже, стираются. Это нормальный эффект return invocation.invoke(); перехватчика? Есть ли что-нибудь, что я могу сделать, чтобы исправить это?

+0

Как вы определяете этот перехватчик? Вы включаете defaultStack? – Trick

ответ

3

y Определяя свой собственный перехватчик, вы вызываете выброс всех перехватчиков по умолчанию?

Возможно, вы определяете стек перехватчика, который включает в себя ваш перехватчик и стек по умолчанию?

<package name="default" extends="struts-default"> 
    <interceptors> 
     <interceptor name="sessionInterceptor" class="SessionInterceptor"/> 
     <interceptor-stack name="myStack"> 
      <interceptor-ref name="sessionInterceptor"/> 
     </interceptor-stack> 
    </interceptors> 

<action name="movefc_ShowFjt" 
    class="struts2.ShowFjtAction"> 
     <interceptor-ref name="myStack"/> 
     <result name="input" type="dispatcher">jsp/showFjt.jsp</result> 
     <result name="success" type="dispatcher">jsp/showFjt.jsp</result> 
</action> 
+0

Первый тест показывает, что вы правы. Я полагал, что в Struts.xml был необязательным, но на самом деле кажется, что вы должны его использовать. – cyberfred

+0

ParamatersInterceptor получает значения со страницы jsp и устанавливает их в полях действий. Аналогичным образом другой перехватчик имеет и другие важные вещи. Хорошо знать функции встроенного перехватчика и влияние удаления или изменения порядка любого из перехватчиков. –

2

Вся концепция объясняется следующим образом

1] Во-первых, когда пользователь не записывает какие-перехватчики, то будет использоваться перехватчики, определенные в распорок-default.xml. Он определен в struts-core.jar, это достигается путем расширения «struts-default», продленного в нашем теге xml-пакета.

2] Когда пользователь записывает свой собственный перехватчик, если вы добавите один блок кода режима после sessionInterceptor ref name i.e interceptor-ref name = "defaultStack" решит вашу проблему.

Чтобы попробовать, попробуйте разархивировать struts-core.jar и продвигайтесь вперед с вашей реализацией.

Смежные вопросы