有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java模型属性在JSP页面中不能作为请求属性使用

我正在尝试使用springmvc和JSP页面创建一个示例注册页面

在tomcat服务器上打开url时,我发现以下错误

root cause
java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'register' available as request attribute
org.springframework.web.servlet.support.BindStatus.<init>(BindStatus.java:144)
org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getBindStatus(AbstractDataBoundFormElementTag.java:168)
org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getPropertyPath(

我有一个JSP寄存器。jsp

    <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Registration</title>
    </head>
    <body>
    <form:form action="/register/process" method="POST" modelAttribute="register">
        <table style="text-align: center;">

            <tr>
                <td><form:label path="fname">First Name</form:label></td>
                <td><form:input path="fname" name="fname"
                        id="fname" /></td>
            </tr>
            <tr>
                <td><form:label path="lname">Last Name</form:label></td>
                <td><form:input path="lname" name="lname" id="lname" />
                </td>
            </tr>
            <tr>
                <td></td>
                <td>
                <input type="submit" value="CREATE AN ACCOUNT"/>
                </td>
            </tr>
        </table>
    </form:form>
   </body>
  </html>

我有一个controller类UserController。java

package vnfhub.supplier.controller;

@Controller
public class UserController {
    @RequestMapping(value = "/register", method = RequestMethod.GET)
    public String getRegisterForm(Model model) {
        model.addAttribute("register", new Register());
        return "register";
    }

   @RequestMapping(value = "/register/process", method = RequestMethod.POST)
   public String processRegistration(@ModelAttribute("register") Register register, BindingResult result) {
       return "success";
   }
}

的成功。jsp页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Success Form</title>
</head>
<body>
<font color="green"><h1>Hello</h1></font>

<h1>You have successfully registered</h1>
<font color="green"><h1>Welcome to Spring world !</h1></font>
</body>
</html>

我在stackoverflow上尝试了许多解决方案。。。。但没有一个成功


共 (1) 个答案

  1. # 1 楼答案

    我觉得你的代码还可以。我用您的代码模拟了这种情况,但不幸地发现没有例外

    enter image description here

    您可能做错的事情是,您正在tomcat中运行一些旧的构建代码。尝试清理构建在容器中重新部署

    NB:一个友好的建议您做错了一件事,那就是将表单的操作发送到/register/process,然后将请求发送到容器根目录(例如localhost:8080/register/process)。你会因此得到404。你可能不想那样register/process应该是您的URL,这将发布相对于您的应用程序上下文的请求。如果您的应用程序上下文是localhost:8080/test,则会将请求发送到localhost:8080/test/register/process