Wie man in einem Formular Daten nach den eingereichten Sie es mit Spring MVC?
erhalte ich eine Fehlermeldung:
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.Classcastexception-Fehler: java.lang.Objekt kann nicht umgewandelt werden, com.crimetrack.business.Login
Login.java
public class Login {
private String userName;
private String password;
private boolean loggedin;
public Login(){};
/**
* @return the loggedin
*/
public boolean isLoggedin() {
return loggedin;
}
/**
* @param loggedin the loggedin to set
*/
public void setLoggedin(boolean loggedin) {
this.loggedin = loggedin;
}
/**
* @param userName
* @param password
*/
public Login(String userName, String password) {
this.userName = userName;
this.password = password;
}
/**
* @return the userName
*/
public String getUserName() {
return userName;
}
/**
* @param userName the userName to set
*/
public void setUserName(String userName) {
this.userName = userName;
}
/**
* @return the password
*/
public String getPassword() {
return password;
}
/**
* @param password the password to set
*/
public void setPassword(String password) {
this.password = password;
}
}
@Controller
public class AuthenticationController {
private final Logger logger = Logger.getLogger(getClass());
private AuthenticationManager authenticationManager;
private Login login = new Login();
String message = "Congrulations You Have Sucessfully Login";
String errorMsg = "Login Unsucessful";
@RequestMapping(value="login.htm")
public ModelAndView onSubmit(Object command) throws ServletException {
String userName = ((Login)command).getUserName();
String password = ((Login)command).getPassword();
login.setUserName(userName);
login.setPassword(password);
logger.info("Login was set");
logger.info("the username was set to " + login.getUserName());
logger.info("the password was set to " + login.getPassword());
if (authenticationManager.Authenticate(login) == true){
return new ModelAndView("main","welcomeMessage", message);
}
//return new ModelAndView("main","welcomeMessage", message);
return new ModelAndView("login","errorMsg", "Error!!!");
}
}
Welche Linie ist das werfen der exception?
String userName = ((Login)Kommando).getUserName(); String Passwort = ((Login)Kommando).getPassword(); Diese beiden Zeilen
String userName = ((Login)Kommando).getUserName(); String Passwort = ((Login)Kommando).getPassword(); Diese beiden Zeilen
InformationsquelleAutor devdar | 2012-08-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Probieren Sie diese Lösung:
JSP
Controller
Erklärung
Annotation
@ModelAttribute
macht genau das gleiche wiemodel.addAttribute(String name, Object value)
. Zum Beispiel@ModelAttribute Login login
ist das gleiche wiemodel.addAttribute("login", new Login());
.Sagte, mit der
onGet
Methode, die Sie vorbei an solch ein Objekt zur Ansicht. Dank der AttributmodelAttribute="login"
der tag<form:form>
wird der Blick in die Modell-Liste von Attributen zu finden, die name istlogin
. Wenn Sie dort nicht gefunden, wird eine Ausnahme geworfen.Dann, das ist die Magie Teil: mit dem tag
<form:input path="userName" />
, Spring MVC wird automatisch setzen Sie die EigenschaftuserName
von der Bohne, die in dermodelAttribute="login"
Attribut, d.h. in deinem Falllogin
. Wenn Sie bereits so etwas wie<form:input path="wtf" />
, es hätte geworfen eine Ausnahme, weil die BohneLogin
nicht über eine solche Eigenschaft.So, endlich, auf Ihrer
onSubmit
Methode (noch einmal vielen Dank den Anmerkungen@ModelAttribute
), können Sie den Zugriff auf dielogin
bean, zuvor autobinded von Spring MVC.Hinweis
Ich persönlich (fast) niemals einen
ModelAndView
Instanz, sondern gehen wie folgt vor:Den Pfad der JSP angegeben ist, in Ihrem web.xml Datei, zum Beispiel:
Sollten Sie Lesen der doc um mehr Informationen zu erhalten (vgl. 16.5 Auflösen Ansichten).
Siehe mein edit. Verstehen Sie?
ja es hat funktioniert, aber wenn es darum geht, zu verstehen, wie das pojo wird eingestellt mit den Werten aus der UI-ich bin verloren, ich weiß, dass es passiert, aber ich glaube, ich brauche eine Erklärung, wie genau, wie Frühling geht es.
OK, Super Erklärung verstehe ich das ganze viel klarer jetzt
nur noch eine kleine Frage, können Sie mir sagen, wenn Sie möchten, verwenden Sie die ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) Methode. Ich habe diese Methode in anderen Anwendungen, um Benutzern 'post' jetzt sehe ich spring verwendet eine onGet(@ModelAttribute)
InformationsquelleAutor sp00m
In Ihrem 'onSubmit' - Methode sind Sie Gießen
command
zuLogin
.Anscheinend ist es nicht.
Ich habe ein cast: Login Login = (Login)Kommando; und immer noch die gleiche Fehlermeldung
dies ist meine Bewerbung-servlet: <bean name="/login.htm" Klasse="com.crimetrack.web.AuthenticationController"> <property name="authenticationManager" ref="authenticationManager"/> </Bohne>
InformationsquelleAutor Alexander Pogrebnyak