2015-07-03 2 views
0

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

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE struts PUBLIC 
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 
    "http://struts.apache.org/dtds/struts-2.0.dtd"> 
<struts> 
    <constant name="struts.devMode" value="true" /> 
    <constant name="struts.enable.DynamicMethodInvocation" value="true" /> 
    <package name="myPack" extends="struts-default"> 
     <interceptors> 
      <interceptor name="cache" class="org.entity.CacheInterceptor" /> 
      <interceptor name="cacheone" class="org.entity.LoginInterceptors"></interceptor> 
      <interceptor-stack name="cacheStack"> 
       <interceptor-ref name="cache" /> 
       <interceptor-ref name="cacheone"></interceptor-ref> 
       <interceptor-ref name="defaultStack" /> 
      </interceptor-stack> 
      </interceptors> 
     <default-interceptor-ref name="cacheStack" /> 
     <action name="registration" class="org.entity.RegistrationAction"> 
      <result name="input">BloodBankSection.jsp</result> 
      <result name="success">success.jsp</result> 
      <result name="error">BloodCampError.jsp</result> 
     </action> 
     <action name="AdminAction" class="org.entity.AdminAction"> 
      <result name="input">Admin.jsp</result> 
      <result name="success">AdminLoginSucess.jsp</result> 
      <result name="error">Admin.jsp</result> 
     </action> 
     <action name="feedback" class="org.entity.FeedbackAction"> 
      <result name="input">Feedback.jsp</result> 
      <result name="success">/feedbacksuccess.jsp</result> 
      <result name="error">/Feedback.jsp</result> 
     </action> 
     <action name="UpdateStockAction" class="org.entity.UpdateStockAction"> 
      <interceptor-ref name="cacheone"></interceptor-ref> 
      <result name="input">UpdateStock.jsp</result> 
      <result name="success">updatesuccess.jsp</result> 
      <result name="error">UpdateStock.jsp</result> 
     </action> 
     <action name="LoginAction" class="org.entity.LoginAction"> 
      <result name="input">BloodBankSection.jsp</result> 
      <result name="success">UpdateStock.jsp</result> 
      <result name="error">bloodloginerror.jsp</result> 
     </action> 
     <action name="delete" class="org.entity.DeleteAction"> 
      <result name="success">AdminLoginSucess.jsp</result> 
      <result name="error">BloodBankSection.jsp</result> 
     </action> 
     <action name="DonorAction" class="org.entity.DonorAction"> 
      <result name="input">DonorSection.jsp</result> 
      <result name="success">dsuccess.jsp</result> 
      <result name="error">DonorSection.jsp</result> 
     </action> 
     <action name="DonorLoginAction" class="org.entity.DonorLoginAction"> 
      <result name="input">DonorSection.jsp</result> 
      <result name="success">DonorLoginSuccess.jsp</result> 
      <result name="error">donorloginerror.jsp</result> 
     </action> 
     <action name="SearchOneAction" class="org.entity.SearchOneAction"> 
      <result name="input">DonorLoginSuccess.jsp</result> 
      <result name="success">DonorLoginSuccess.jsp</result> 
      <result name="error">errorsearch.jsp</result> 
     </action> 
     <action name="SearchTwoAction" class="org.entity.SearchTwoAction"> 
      <result name="input">DonorLoginSuccess.jsp</result> 
      <result name="success">DonorLoginSuccess.jsp</result> 
      <result name="error">errorsearch.jsp</result> 
     </action> 
     <action name="SearchThreeAction" class="org.entity.SearchThreeAction"> 
      <result name="input">DonorLoginSuccess.jsp</result> 
      <result name="success">DonorLoginSuccess.jsp</result> 
      <result name="error">errorsearch.jsp</result> 
     </action> 

     <action name="DonorInfoAction" class="org.entity.DonorInfoForBloodBank"> 
      <result name="input">donorbloodsection.jsp</result> 
      <result name="success">donorbloodsection.jsp</result> 
      <result name="error">feedbacksuccess.jsp</result> 
     </action> 
     <action name="FPA" class="org.entity.ForgotAction"> 
      <result name="input">ForgotPassword.jsp</result> 
      <result name="success">ForgotPasswordSuccess.jsp</result> 
      <result name="error">errorpassword.jsp</result> 
     </action> 
     <action name="DonorForgotAction" class="org.entity.DonorForgotAction"> 
      <result name="input">DonorForgot.jsp</result> 
      <result name="success">DonorForgotSuccess.jsp</result> 
      <result name="error">errorpassword2.jsp</result> 
     </action> 

     <action name="BloodCampAction" class="org.entity.BloodCampAction"> 
      <result name="input">BloodCampInfoReg.jsp</result> 
      <result name="success">BloodCampSuccess.jsp</result> 
      <result name="error">BloodCampError.jsp</result> 
     </action> 

     <action name="BloodBankEditAction" class="org.entity.BloodBankEditAction"> 
      <result name="input">BloodUpdateProfile.jsp</result> 
      <result name="success">UpdateStock.jsp</result> 
      <result name="error">BloodUpdateProfile.jsp</result> 
     </action> 
     <action name="DonorEditAction" class="org.entity.DonorEditAction"> 
      <result name="input">DonorUpdateProfile.jsp</result> 
      <result name="success">DonorLoginSuccess.jsp</result> 
      <result name="error">DonorUpdateProfile.jsp</result> 
     </action> 
     <action name="logout" class="org.entity.LoginAction" method="logout"> 
      <result type="redirect">BloodBankSection.jsp</result> 
     </action> 
     <action name="logout2" class="org.entity.DonorLoginAction" method="logout"> 
      <result type="redirect">DonorSection.jsp</result> 
     </action>  
     <action name="LastDonatedDateAction" class="org.entity.LastDonatedDateAction"> 
      <result name="input">DonorLoginSuccess.jsp</result> 
      <result name="success">LastDonatedSuccess.jsp</result> 
      <result name="error">LastDonatedError.jsp</result> 
     </action> 

    </package> 
</struts> 

Ниже мои LoginInterceptors класса.

package org.entity; 
import javax.servlet.http.HttpServletResponse; 
import javax.servlet.http.HttpSession; 
import org.apache.struts2.ServletActionContext; 
import com.opensymphony.xwork2.ActionInvocation; 
import com.opensymphony.xwork2.interceptor.Interceptor; 

public class LoginInterceptors implements Interceptor 
{ 

    @Override 
    public void destroy() { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void init() { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public String intercept(ActionInvocation action) throws Exception { 
     HttpSession session=ServletActionContext.getRequest().getSession(false); 
     if(session==null || session.getAttribute("login")==null) 
     { 
      ServletActionContext.getResponse().sendRedirect("BloodBankSection.jsp"); 
      System.out.println("First Inter"); 
     } 

     return action.invoke(); 

    } 

} 

Поскольку перехватчики всегда выполняются первыми, ошибки поля поля не видны, а также не перенаправляются на предполагаемую страницу. Результатом является «первый интервал», за которым следуют остальные тестовые линии.

+0

В чем вопрос? –

+0

Мой сценарий: когда я нажимаю на кнопку регистрации, форма (пустая) обрабатывается, но не дает никакой ошибки поля, ни пользователь не регистрируется. Метод проверки не выполняется, но из-за перехватчиков он не отображается в форме расположений. –

+0

Полевые ошибки скрыты из-за перехватчиков –

ответ

1

Сначала удалите перехватчик входа из стека перехватчика фактического действия входа. Это предотвращает выполнение действия, так как вы еще не вошли в систему.

Во-вторых, перехватчик не должен перенаправляться напрямую. Он создает новый запрос, что также означает, что ошибки проверки теряются. Пусть он возвращает значение результата.

@Override 
public String intercept(ActionInvocation action) throws Exception { 
    HttpSession session=ServletActionContext.getRequest().getSession(false); 
    if(session==null || session.getAttribute("login")==null) 
    { 
     System.out.println("First Inter"); 
     return "login"; 
    } 
    return action.invoke(); 
} 

Для этого вы можете создать запись <global-results>. Который должен (обычно) не быть перенаправлением.

<struts> 
    <package name="myPack" extends="struts-default"> 

     <global-results> 
      <result name="login">BloodBankSection.jsp</result> 
     </global-results> 

</struts> 
+0

спасибо, что это сработало! :) –

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

  • Нет связанных вопросов^_^