当前位置: 首页 > 知识库问答 >
问题:

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

饶滨海
2023-03-14

我试图用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(

我有一个JSPregister.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>

我有一个控制器类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";
   }
}

还有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个答案

曹新觉
2023-03-14

就你在这里给出的代码而言,我觉得你的代码很好。我用你的代码模拟了这种情况,但意外地发现没有异常

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

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

 类似资料:
  • 在ReservationController中。java我有以下方法,它从新的reservation中获取reservation对象。jsp 并将其发送到BookController。java,其中另一个方法向模型添加另一个属性 并返回以下addbook。jsp 现在,当我处理表单的action addBook时 我试图从模型中检索保留对象,但得到一个空。我如何通过我之前向您展示过的JSP传递我的

  • 问题内容: 在模型类中使用JavaFX bean属性是否正确? 我想知道在模型类中使用属​​性是否能够将它们与视图组件轻松绑定是否是一种好习惯。我不担心将来这些库的可用性,因为我的程序将在JRE8或更高版本上运行,但是在模型类中使用JavaFX库的性质使我持怀疑态度,并且我担心当前和将来的不兼容性,尤其是因为我想使用Hibernate来保留这些属性。 注意:我使用纯JavaFX环境,并且我的应用程

  • 我的控制器中有一个HTTP类型POST的RESTendpoint(/用户),该RESTendpoint接受具有以下属性的用户请求体: 我的要求是,应该是完全可选的,因为如果用户调用RESTendpoint而没有在有效负载中指定(关键字),它应该像一个魅力。对于例如。 因此,如果用户没有在有效负载中指定关键字,我有一个默认的业务逻辑要执行,另一方面,如果用户指定关键字及其值,那么我有一些其他逻辑要处

  • 我有一个ASP. NET核心Web API。 一个endpoint,它接受一个名为搜索的模型。它有一个名为表达式类型查询的属性。这个表达式对象有子类。 我将以下JSON发布到我的endpoint(应用程序的内容类型/JSON) {"查询":{"字段ID":"主体","值":"蛋糕","运算符":"匹配"}} 首先,查询参数只是基本表达式——一个多态性问题! 所以我以为是定制的模型活页夹。 我可以针

  • 了解如何设置 Dreamweaver 页面的 HTML 页面属性和 CSS 属性,如字体、背景颜色和背景图像属性。 对于在 Dreamweaver 中创建的每个页面,都可以使用“页面属性”对话框(“文件”>“页面属性”)指定布局和格式设置属性。“页面属性”对话框让您可以指定页面的默认字体系列和字体大小、背景颜色、边距、链接样式及页面设计的其他许多方面。您可以为创建的每个新页面指定新的页面属性,也可

  • 我有以下代码: 我想删除脚本,我尝试使用c: set与不同的范围,但它不起作用。是否可以使用JSTL标签设置请求属性? 我试过了,但没有成功: 而且还 之后有一个包括: 显然,在包含的JSP中,请求属性不可见。