0

当我尝试执行以下示例时,出现异常。请检查以下代码并尝试提供解决方案。

问题:

我能够显示 Jsp 页面,但在提交表单后出现异常“既不 BindingResult 也不...”,但未向表单提供任何输入。

基本上我的要求是在页面中显示验证。

以下是我的控制器:

package jaya.controller;

import java.util.Map;

import javax.validation.Valid;

mport jaya.form.ValidateMainForm;

import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
@RequestMapping("/validationform.html")
public class ValidateMainController {

private Object validationForm;

@RequestMapping(method = RequestMethod.GET)
public String printWelcome(Map model) {
    //System.out.println("+++From Controller printWelcome method");
    ValidateMainForm validationForm=new ValidateMainForm();

    model.put("validationForm", validationForm);
    return "ValidateForm";
}

@RequestMapping(method = RequestMethod.POST)
public String method1(@Valid ValidateMainForm validationForm,BindingResult result,Map model) {

    //System.out.println("+++From Controller method1");

    if (result.hasErrors()) {
        //System.out.println("++++Errors");
        return "ValidateForm";
    } else {
        //System.out.println("+++From controller success");
        //model.put("validationForm", validationForm);
            return "ValidateSuccess";
    }
}

}

这是我的表格:

package jaya.form;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import org.hibernate.validator.constraints.NotBlank;
import org.hibernate.validator.constraints.NotEmpty;
import org.springframework.format.annotation.NumberFormat;
import org.springframework.format.annotation.NumberFormat.Style;

public class ValidateMainForm {

public ValidateMainForm() {
System.out.println("+++++++++++++++++ok");
}
@NotEmpty

private String userName;
@NotNull
@Min(1)
@Max(50)
//@NumberFormat(style=Style.NUMBER)
private String age;
@NotBlank
@Size(max=8)
private String password;


public String getUserName() {
    return userName;
}
public void setUserName(String userName) {
    this.userName = userName;
}
public String getAge() {
    return age;
}
public void setAge(String age) {
    this.age = age;
}
public String getPassword() {
    return password;
}
public void setPassword(String password) {
    this.password = password;
}

}

我的 JSP 页面:

package jaya.form;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

import org.hibernate.validator.constraints.NotBlank;
import org.hibernate.validator.constraints.NotEmpty;
import org.springframework.format.annotation.NumberFormat;
import org.springframework.format.annotation.NumberFormat.Style;

public class ValidateMainForm {

public ValidateMainForm() {
System.out.println("+++++++++++++++++ok");
}
@NotEmpty

private String userName;
@NotNull
@Min(1)
@Max(50)
//@NumberFormat(style=Style.NUMBER)
private String age;
@NotBlank
@Size(max=8)
private String password;


public String getUserName() {
    return userName;
}
public void setUserName(String userName) {
    this.userName = userName;
}
public String getAge() {
    return age;
}
public void setAge(String age) {
    this.age = age;
}
public String getPassword() {
    return password;
}
public void setPassword(String password) {
    this.password = password;
}

}

以下是控制台中的异常:

org.apache.jasper.JasperException: java.lang.IllegalStateException: Neither    BindingResult nor plain target object for bean name 'validationForm' available as request attribute
 org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:549)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:465)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238)
org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:263)
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1208)
org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:992)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:939)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:838)
javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
root cause

java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'validationForm' available as request attribute
org.springframework.web.servlet.support.BindStatus.<init>(BindStatus.java:141)
org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getBindStatus(AbstractDataBoundFormElementTag.java:179)
org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getPropertyPath(AbstractDataBoundFormElementTag.java:199)
org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getName(AbstractDataBoundFormElementTag.java:165)
org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.autogenerateId(AbstractDataBoundFormElementTag.java:152)
org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.resolveId(AbstractDataBoundFormElementTag.java:143)
org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.writeDefaultAttributes(AbstractDataBoundFormElementTag.java:127)
org.springframework.web.servlet.tags.form.AbstractHtmlElementTag.writeDefaultAttributes(AbstractHtmlElementTag.java:421)
org.springframework.web.servlet.tags.form.InputTag.writeTagContent(InputTag.java:142)
org.springframework.web.servlet.tags.form.AbstractFormTag.doStartTagInternal(AbstractFormTag.java:103)
org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag(RequestContextAwareTag.java:80)
org.apache.jsp.WEB_002dINF.views.ValidateForm_jsp._jspx_meth_form_005finput_005f0(ValidateForm_jsp.java:243)
org.apache.jsp.WEB_002dINF.views.ValidateForm_jsp._jspService(ValidateForm_jsp.java:129)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238)
org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:263)
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1208)
org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:992)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:939)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:838)
javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
4

0 回答 0