العودة تحكم عرض نفسه باستخدام ModelAndView الربيع الويب MVC

StackOverflow https://stackoverflow.com/questions/1642784

  •  10-07-2019
  •  | 
  •  

سؤال

وأستخدمه الربيع الويب MVC والسبات لتطوير التطبيق الخاص بي.

الصفحة login.jsp بلدي ديه البرمجية التالية:

<form:form method="post" commandName="User">
   User Name : 
      <form:input path="email"/>
   Password : 
     <form:input path="password"/>

<input type="submit" align="center" value="Execute">

والآن، ملفي servlet.xml ديه البرمجية التالية:

 <bean name="/uservalidate.htm" class="com.sufalam.mailserver.presentation.web.UserValidateFormController">
        <property name="sessionForm" value="true"/>
        <property name="commandName" value="User"/>
        <property name="commandClass" value="com.sufalam.mailserver.bean.User"/>
        <property name="formView" value="login"/>
        <property name="successView" value="layout.jsp"/>
        <property name="userSecurityProcessor" ref="IUserSecurityProcessor"/>
    </bean>

وبلدي UserValidateFormController ديه البرمجية التالية:

public class UserValidateFormController extends SimpleFormController {

    /** Logger for this class and subclasses */
    protected final Log logger = LogFactory.getLog(getClass());
    private IUserSecurityProcessor userSecurityProcessor;

    public ModelAndView onSubmit(Object command)
            throws ServletException, SufalamException {
            ModelAndView mav = new ModelAndView();
            Map model = new HashMap();


        String username = ((User) command).getEmail();
        String password = ((User) command).getPassword();
        List userChecking = new ArrayList();
        userChecking = userSecurityProcessor.findByAll(username, password, 0.0);
        System.out.println("userChecking length = "+userChecking.size());
        if (userChecking.size() == 1) {
            return new ModelAndView("layout");
            //return new ModelAndView(new RedirectView(getSuccessView()));
        }

        return new ModelAndView("login", model);

    }

    protected Object formBackingObject(HttpServletRequest request) throws ServletException {
        User user = new User();
        return user;
    }

  public void setUserSecurityProcessor(IUserSecurityProcessor userSecurityProcessor) {
        this.userSecurityProcessor = userSecurityProcessor;

    }

في UserValidateFormController بلدي في وقت تسليم تقديم الحدث، وأنا على التحقق من أن اسم المستخدم وكلمة المرور صحيحة أم لا ..

وانها تعمل بشكل جيد وإذا كان كل ومطابقة ثم إعادة توجيه لlayout.jsp، وهذا أيضا ما يرام.

ولكن إذا كان اسم المستخدم أو كلمة المرور غير صحيحة ثم أريد أن إعادة توجيه إلى صفحة login.jsp نفسها وعرض الخطأ المناسب ..

يرجى توحي لي الحل الذي ما يجب القيام به إعادة توجيه إلى وحدة تحكم عرض نفسه ..

وشكرا مقدما ..

هل كانت مفيدة؟

المحلول

وأخيرا حل هذه المسألة مع التالية سطر من التعليمات البرمجية:

return new ModelAndView(new RedirectView(getSuccessView()));

أو

return new ModelAndView(new RedirectView("success.htm");

وشكرا ...

نصائح أخرى

إذا كان لديك <لأ href = "http://static.springsource.org/spring/docs/2.5.5/api/org/springframework/web/servlet/view/InternalResourceViewResolver.html" يختلط = "نوفولو "> InternalResourceViewResolver تكوين، يمكنك أن تفعل ذلك مثل هذا:

return new ModelAndView("redirect:success.htm");

في رأيي، وهذا هو أكثر وضوحا.

وأود أن أقول كل ما عليك القيام به هو تعبئة النموذج الخاص بك قبل استخدامه مرة أخرى:

    if (userChecking.size() == 1) {
        return new ModelAndView("layout");
        //return new ModelAndView(new RedirectView(getSuccessView()));
    }
    model.put("User", command);
    return new ModelAndView("login", model);

... لست متأكدا إذا كان هذا هو ما كنت أبحث عنه، ولكن هل هذا كيف يمكنني حل مشكلتك:

    else { return new ModelAndView( "login", model ); }

و... وإلا فاتني شيء في سؤالك. يبدو لي أنك بعيد جدا أن تتعثر من هذا القبيل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top