Hi saravanan,
Your example really worked.. As per your example i hv done changes but still there is some other error occurs.. Below is my codes. please refer and let me know where am i wrong?
My bean class
------------------------
public class StudRegBean {
private String username;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
-----------------------------
my controller class
----------------------
public class regController extends MultiActionController {
ServletRequestDataBinder binder;
public ModelAndView saveRegistration( HttpServletRequest request, HttpServletResponse response,StudRegBean studRegBean) throws Exception { ModelAndView mv = new ModelAndView("Registration/studentRegistration");
bind(request,studRegBean);
validate(studRegBean);
System.out.println("in save reg : " + studRegBean.getUsername() );
if(errors.hasErrors())
{
Object[] tmp=errors.getModel().keySet().toArray();
mv.addObject("username",errors.getModel());
}
return mv;
}
else
{ mv.addObject("studRegBean",studRegBean);
return mv;
}
}
BindingResult errors;
public BindingResult getErrors() {
return errors;
}
public void setErrors(BindingResult errors) {
this.errors = errors;
}
@Override
protected void bind(HttpServletRequest request, Object command) throws Exception {
StudRegBean studRegBean=(StudRegBean)command;
ServletRequestDataBinder binder=createBinder(request, command);
binder.bind(request);
errors=binder.getBindingResult();
}
public void validate(Object command)
{
Validator[] validators = getValidators();
if (validators != null)
{
for (int index = 0; index < validators.length; index++)
{
Validator validator = validators[index];
if (validator instanceof StudRegValidator)
{
if (((StudRegValidator)validator).supports(command.ge tClass()))
ValidationUtils.invokeValidator(validators[index], command, errors);
}
else if (validator.supports(command.getClass()))
ValidationUtils.invokeValidator(validators[index], command, errors);
}
}
}
}
------------------------------------------------------------------------
My Validator class
------------------------------------------
public class StudRegValidator implements Validator{
public boolean supports(Class arg0) {
return arg0.equals(StudRegBean.class);
}
public void validate(Object obj, Errors errors) {
StudRegBean studRegBean=(StudRegBean)obj;
try{
if (studRegBean == null) {
errors.rejectValue("username", "error.login.not-specified", null,"Value required.");
}
else{
if (studRegBean.getUsername()== null || studRegBean.getUsername().trim().length() <= 0) {
System.out.println("user name null value");
ValidationUtils.rejectIfEmpty(errors, "username",null,"cannnot be null");
}
}
}
catch(Exception e){
System.out.println("error caught in validator");
e.printStackTrace();
}
}
}
----------------------------------------------------------------------
My Jsp Page
---------------------------
<html><head>
<script>
function saveRegistration(){
document.forms[0].param.value="saveRegistration";
document.forms[0].submit();
}
</script></head>
<body>
<form:form action="studReg.htm" commandName="studRegBean">
<input type="hidden" name="param" />
<table cellpadding="2" border="1">
<tr>
<td class="labels" colspan="2" align="left" ><b>
Account Details</b>
</td>
</tr>
<tr>
<td class="labels" align="left">*Username</td>
<td align="left">
<form:input path="username"/>
<form:errors path="username"/>
</td>
</tr>
<tr><td align="center">
<input type ="button" value="Submit" onclick="saveRegistration()"/>
<input type ="reset" value="Reset"/>
<input type ="button" value="Cancel"/>
</td></tr>
</table>
</form:form>
</body>
</html>
-----------------------------------------------------------------------
Finally the dispatcher servlet.xml
-----------------------------------
<bean id="urlMapping" class="org.springframework.web.servlet.handler.Sim pleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="index.htm">indexController</prop>
<prop key="studReg.htm">regController</prop>
</props>
</property>
</bean>
<bean id="viewResolver" class="org.springframework.web.servlet.view.Intern alResourceViewResolver"
prefix="/WEB-INF/jsp/"
p:suffix=".jsp" />
<bean id="selectMethodResolver" class="org.springframework.web.servlet.mvc.multiac tion.ParameterMethodNameResolver">
<property name="paramName">
<value>param</value>
</property>
</bean>
<bean id="regController" class="controllers.regController">
<property name="methodNameResolver">
<ref bean="selectMethodResolver"/>
</property>
<property name="validators">
<ref bean="studRegValidator"/>
</property>
</bean>
----------------------------------------------------------------------
Error that is displayed is
--------------------------------------------------
org.apache.jasper.JasperException: java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'studRegBean' available as request attribute org.apache.jasper.servlet.JspServletWrapper.handle JspException(JspServletWrapper.java:521)
org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:409)
org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:336)
org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet .java:803)
org.springframework.web.servlet.view.InternalResou rceView.renderMergedOutputModel(InternalResourceVi ew.java:167)
org.springframework.web.servlet.view.AbstractView. render(AbstractView.java:239)
org.springframework.web.servlet.DispatcherServlet. render(DispatcherServlet.java:1158)
org.springframework.web.servlet.DispatcherServlet. doDispatch(DispatcherServlet.java:900)
org.springframework.web.servlet.DispatcherServlet. doService(DispatcherServlet.java:808)
org.springframework.web.servlet.FrameworkServlet.p rocessRequest(FrameworkServlet.java:476)
org.springframework.web.servlet.FrameworkServlet.d oPost(FrameworkServlet.java:441)
javax.servlet.http.HttpServlet.service(HttpServlet .java:710)
javax.servlet.http.HttpServlet.service(HttpServlet .java:803)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doF ilter(ReplyHeaderFilter.java:96)
root cause
java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'studRegBean' available as request attribute
org.springframework.web.servlet.support.BindStatus .<init>(BindStatus.java:142)
org.springframework.web.servlet.tags.form.Abstract DataBoundFormElementTag.getBindStatus(AbstractData BoundFormElementTag.java:176)
org.springframework.web.servlet.tags.form.Abstract DataBoundFormElementTag.getPropertyPath(AbstractDa taBoundFormElementTag.java:196)
org.springframework.web.servlet.tags.form.Abstract DataBoundFormElementTag.getName(AbstractDataBoundF ormElementTag.java:147)
org.springframework.web.servlet.tags.form.Abstract DataBoundFormElementTag.autogenerateId(AbstractDat aBoundFormElementTag.java:134)
org.springframework.web.servlet.tags.form.Abstract DataBoundFormElementTag.writeDefaultAttributes(Abs tractDataBoundFormElementTag.java:123)
org.springframework.web.servlet.tags.form.Abstract HtmlElementTag.writeDefaultAttributes(AbstractHtml ElementTag.java:379)
org.springframework.web.servlet.tags.form.InputTag .writeTagContent(InputTag.java:139)
org.springframework.web.servlet.tags.form.Abstract FormTag.doStartTagInternal(AbstractFormTag.java:90 )
org.springframework.web.servlet.tags.RequestContex tAwareTag.doStartTag(RequestContextAwareTag.java:7 7)
org.apache.jsp.WEB_002dINF.jsp.Registration.studen tRegistration_jsp._jspx_meth_form_005finput_005f0( studentRegistration_jsp.java:649)
org.apache.jsp.WEB_002dINF.jsp.Registration.studen tRegistration_jsp._jspService(studentRegistration_ jsp.java:318)
org.apache.jasper.runtime.HttpJspBase.service(Http JspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet .java:803)
org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:373)
org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:336)
org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet .java:803)
org.springframework.web.servlet.view.InternalResou rceView.renderMergedOutputModel(InternalResourceVi ew.java:167)
org.springframework.web.servlet.view.AbstractView. render(AbstractView.java:239)
org.springframework.web.servlet.DispatcherServlet. render(DispatcherServlet.java:1158)
org.springframework.web.servlet.DispatcherServlet. doDispatch(DispatcherServlet.java:900)
org.springframework.web.servlet.DispatcherServlet. doService(DispatcherServlet.java:808)
org.springframework.web.servlet.FrameworkServlet.p rocessRequest(FrameworkServlet.java:476)
org.springframework.web.servlet.FrameworkServlet.d oPost(FrameworkServlet.java:441)
javax.servlet.http.HttpServlet.service(HttpServlet .java:710)
javax.servlet.http.HttpServlet.service(HttpServlet .java:803)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doF ilter(ReplyHeaderFilter.java:96)
-------------------------------------------------------------------------
My target is to show the errors beside the textboxes that are empty..
Please refer it and let me know where am i wrong.
Thanks for you reply..
Thanks & Regards
Levis[/LEFT][/CENTER][/LEFT][/LEFT]


refix="/WEB-INF/jsp/"
Reply With Quote
