为了账号安全,请及时绑定邮箱和手机立即绑定

无法显示 jsp 页

无法显示 jsp 页

米脂 2022-09-22 10:22:29

绑定结果和 Bean 名称“user” 的纯目标对象都不能作为请求属性


2019 年 4 月 05 日 9:18:13 AM 组织.apache.catalina.core.标准包装阀调用严重: Servlet.service() 在上下文中与路径 [/数据可视化] 抛出异常 [发生异常处理 JSP 页面 /WEB-INF/视图/AddUserForm.jsp在第 23 行


20:21:

22:输入名称:23:24:25:

26:保存


堆栈跟踪:] 具有根本原因 java.lang.非法状态异常:绑定结果和纯目标对象在组织上既不能作为请求属性,也不能作为请求属性。(宾德状态.java:153)


package com.datavisualization.controller;



import org.apache.log4j.Logger;

import org.springframework.stereotype.Controller;

import org.springframework.ui.Model;

import org.springframework.validation.BindingResult;

import org.springframework.web.bind.annotation.ModelAttribute;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;


import com.datavisualization.model.User;


@Controller

@RequestMapping("restApi/dataVizualization")

public class GetUserData {

private static Logger logger=Logger.getLogger(GetUserData.class);

@RequestMapping(value="adduser")

public String addUserForm()

{

    logger.info("===addUserForm ");

    return "AddUserForm";

}

@RequestMapping(value="save", method=RequestMethod.POST)

public void saveUser(@ModelAttribute("user") User user,BindingResult                                          result,Model model)

{

    System.out.println("=== save user method");

}

}

模型类:包网站数据可视化模型;


import java.io.Serializable;


public class User implements Serializable {


private static final long serialVersionUID = 1L;


private String name;


public User() {

super();

// TODO Auto-generated constructor stub

}

public User( String name) {

super();


this.name = name;

}



public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}


查看完整描述

2 回答

?
一只甜甜圈

TA贡献1486条经验 获得超5个赞

下面的方法调用用户表单,但在这里你没有提到JSP中使用的模型属性,这就是为什么你得到一个错误。因为在你的JSP页面中不知道什么是用户。所以你需要在控制器中提到用户属性


@RequestMapping(value="adduser")

public String addUserForm()

{

    logger.info("===addUserForm ");

    return "AddUserForm";

}

解决方案是,将方法更改为此


@RequestMapping(value="adduser")

public String addUserForm(Model model)

{

    logger.info("===addUserForm ");

    model.addAttribute("user", new User());

    return "AddUserForm";

}

和更改为您错过/在映射中。这是最佳实践。@RequestMapping("restApi/dataVizualization")@RequestMapping("/restApi/dataVizualization")


祝你好运


查看完整回答
反对 回复 2022-09-22
?
翻过高山走不出你

TA贡献1525条经验 获得超2个赞

为什么使用绑定结果?我只将绑定结果与@Valid一起使用。尝试删除绑定结果,我认为它会起作用!


@RequestMapping(value="save", method=RequestMethod.POST)

public void saveUser(@ModelAttribute("user") User user,Model model)

{

    System.out.println("=== save user method");

}


查看完整回答
反对 回复 2022-09-22

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信