Saturday, 15 February 2014

java - Simple SpringMVC 3 Login doesn't work -



java - Simple SpringMVC 3 Login doesn't work -

i'm trying create work simple login webpage in spring mvc 3.0 through annotations. after dealing several hours haven't been able run it. believe problem dispatcher, i've tried lot of things no success... i'll post code:

loginview.jsp (only form shown)

<form:form method="post" action="dologin" commandname="login" modelattribute="login"> <p> <form:input path="username"/> </p> <p> <form:input path="password"/> </p> <p class="submit"><input type="submit" name="commit" value="login"></p> </form:form>

login.java quite easy, contains username , pasword attributes , setters/getters.

logincontroller.java

@controller @requestmapping("dologin") public class logincontroller { @requestmapping(method = requestmethod.get) public string showform(map model) { login login = new login(); model.put("login", login); homecoming "loginview"; } @requestmapping(method = requestmethod.post) public string processform(login login, bindingresult result, map model) { string username = "admin"; string password = "root"; if (result.haserrors()) { homecoming "login"; } login = (login) model.get("login"); if (!login.getusername().equals(username) || !login.getpassword().equals(password)) { homecoming "loginerror"; } model.put("login", login); homecoming "loginsuccess"; } }

dispatcher-servlet.xml

<mvc:annotation-driven /> <context:component-scan base-package="spring.blog.src"/> <bean class="org.springframework.web.servlet.mvc.support.controllerclassnamehandlermapping"/> <bean class="org.springframework.web.servlet.mvc.annotation.defaultannotationhandlermapping"/> <bean class="org.springframework.web.servlet.mvc.annotation.annotationmethodhandleradapter"/> <bean id="urlmapping" class="org.springframework.web.servlet.handler.simpleurlhandlermapping"> <property name="mappings"> <props> <prop key="loginview.htm">indexcontroller</prop> </props> </property> </bean> <bean id="viewresolver" class="org.springframework.web.servlet.view.internalresourceviewresolver"> <property name="prefix"> <value>/web-inf/jsp/</value> </property> <property name="suffix"> <value>.jsp</value> </property> </bean> <bean name="indexcontroller" class="org.springframework.web.servlet.mvc.parameterizableviewcontroller"> <property name="viewname"> <value>loginview</value> </property> </bean>

i know there wrong here, don't know what.... error thrown tomcat (i'm sorry, lines in spanish...)

org.apache.jasper.jasperexception: ha sucedido una excepción al procesar la página jsp /web-inf/jsp/loginview.jsp en línea 26 24: <form:form method="post" action="dologin" commandname="login"> 25: <!-- <p><input type="text" name="login" value="" placeholder="username or email"></p> --> 26: <p> <form:input path="username"/> </p> 27: <!-- <p><input type="password" name="password" value="" placeholder="password"></p> --> 28: <p> <form:input path="password"/> </p> 29: <p class="remember_me"> stacktrace: org.apache.jasper.servlet.jspservletwrapper.handlejspexception(jspservletwrapper.java:521) org.apache.jasper.servlet.jspservletwrapper.service(jspservletwrapper.java:424) org.apache.jasper.servlet.jspservlet.servicejspfile(jspservlet.java:313) org.apache.jasper.servlet.jspservlet.service(jspservlet.java:260) causa raíz java.lang.illegalstateexception: neither bindingresult nor plain target object bean name 'login' available request attribute org.springframework.web.servlet.support.bindstatus.<init>(bindstatus.java:141) org.springframework.web.servlet.tags.form.abstractdataboundformelementtag.getbindstatus(abstractdataboundformelementtag.java:178) org.springframework.web.servlet.tags.form.abstractdataboundformelementtag.getpropertypath(abstractdataboundformelementtag.java:198)

i'll apreciate help !!

your method signature should below. signature needed @modelattribute annotation. model not needed part of signature.

@requestmapping(method = requestmethod.post) public string processform(@modelattribute login login, bindingresult result) { string username = "admin"; string password = "root"; if (result.haserrors()) { homecoming "login"; } if (!login.getusername().equals(username) || !login.getpassword().equals(password)) { homecoming "loginerror"; } homecoming "loginsuccess"; }

also jsp need command name attribute , not modelattribute on form:form tag.

<form:form method="post" action="dologin" commandname="login">

java xml spring-mvc

No comments:

Post a Comment