2009-10-29 5 views
5

Sto utilizzando Spring Web MVC e Hibernate per lo sviluppo della mia applicazione.Restituisce il controller della stessa vista utilizzando ModelAndView di Spring Web MVC

La mia pagina login.jsp ha seguente codice:

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

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

Ora, Il mio file servlet.xml ha seguente codice:

<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> 

mio UserValidateFormController ha seguente codice:

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; 

    } 

Nel mio UserValidateFormController al momento della consegna dell'evento submit, sto verificando che username e passwor d sono corretti o no ..

Sta funzionando bene & se entrambi corrispondono quindi il suo reindirizzamento a layout.jsp, va bene anche questo.

Ma se nome utente o password non sono corretti, allora voglio reindirizzare alla stessa pagina login.jsp e visualizzare errore appropriato ..

Per favore mi suggeriscono la soluzione che cosa fare per il reindirizzamento stesso controller della vista ..

Grazie in anticipo ..

+0

... se non vi dispiace chiedere, se avete preso la briga di usare Spring, c'è una ragione particolare per cui state lanciando la vostra misura di sicurezza invece di implementare Acegi (o Sprint Security come viene chiamato adesso) ? – vector

+1

Ya, ho usato ACEGI e molto ben noto a riguardo ... Ma il mio attuale sistema non richiede molto carico. Queste domande sono solo dei concetti base di base che come posso reindirizzare alla stessa pagina JSP chiamata , controller .. – Nirmal

+0

... abbastanza giusto. – vector

risposta

13

Infine risolvere questo problema con la seguente riga di codice:

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

o

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

Grazie ...

0

... non so se questo è quello che stai cercando, ma è così che posso risolvere il tuo problema:

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

... altrimenti ho perso qualcosa nella tua domanda. Mi sembra che tu sia piuttosto lontano per rimanere bloccato in questo modo.

+0

Non posso farlo, poiché la mia pagina di login richiede l'inizializzazione dell'Utente ... Quindi, sarà nei guai e mi darà un errore di non riuscire a trovare il Comando Utente da login.jsp .. – Nirmal

+0

... che dire: restituisci nuovo ModelAndView (nuovo RedirectView (getFormView()), modello); – vector

0

direi tutto quello che dovete fare è compilare il vostro modello prima di riutilizzarlo:

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

Se avete un InternalResourceViewResolver configurato, si può fare in questo modo:

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

A mio parere, questo è chiaro.

Problemi correlati