【问题标题】:Neither BindingResult Nor Plain Target Object For Bean Name ‘Xxx’ Available As Request AttributeBean 名称“Xxx”的 BindingResult 和普通目标对象都不能用作请求属性
【发布时间】:2013-08-15 14:43:09
【问题描述】:

我在尝试配置弹簧控制器时收到此错误。我确定我的名称正确匹配,但它仍然给我这个错误。这是我的控制器类。输入和输出页面也是一样的。请帮帮我

“bean name 'userForm' 的 BindingResult 和普通目标对象都不能用作请求属性”

@Controller
@SessionAttributes
public class UserController {

    protected Log logger = LogFactory.getLog(getClass());

    @Autowired
    UserService userService;

    @RequestMapping(value="/userList")
    public ModelAndView getUserList(){

        List<User> userList = userService.getUserList();        

        return new ModelAndView("userList", "userList", userList);      
    }

    @RequestMapping(value="/findUser")
    public ModelAndView findUser(@ModelAttribute("user") User user,
                                 BindingResult result){ 

        List<User> userResultsList = null;

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

        userResultsList = userService.findUser(user.getUsername(), user.getFirstname(),
                user.getLastname());            

        return new ModelAndView("userList", "user", userResultsList);       
    }


}

我的 JSP 在这里

<body>
    <form:form modelAttribute="user" method="post" action="/findUser.html">
        <table>
            <tr>
                <td><form:label path="username">User ID:</form:label></td>
                <td><form:input path="username" /></td>
            </tr>
            <tr>
                <td><form:label path="firstname">First Name</form:label></td>
                <td><form:input path="firstname" /></td>
            </tr>
            <tr>
                <td><form:label path="lastname">Last Name:</form:label></td>
                <td><form:input path="lastname" /></td>
            </tr>
            <tr>
                <td colspan="2"><input type="submit" value="findUser" /></td>
            </tr>
        </table>
    </form:form>    
        <table>
            <tr>
                <td>User Id</td>
                <td>First Name</td>
                <td>Last Name</td>
                <td>Email Address</td>
                <td>Last Update Date</td>
                <td>Last Update By</td>
            </tr>
        <c:forEach var="list" items="${userList}">
            <tr>
                <td>${list.userId}</td>
                <td>${list.username}</td>
                <td>${list.firstname}</td>
                <td>${list.lastname}</td>
                <td>${list.email}</td>
                <td>${list.lastUpdatedBy}</td>
                <td>${list.lastUpdatedDate}</td>    
                <td><a href="listVendors.html?userId=${list.userId}">assignVendor</a></td>          
            </tr>
        </c:forEach>
    </table>

【问题讨论】:

    标签: spring-mvc


    【解决方案1】:

    尝试在您的公共 ModelAndView getUserList() 方法中添加以下行:

    modelAndView.addObject("user", new User());
    

    【讨论】:

    • 我刚刚更新了 return new ModelAndView("userList", "user", userList);上面语句中的 userList 到 'user' 并且它现在正在工作。但它抱怨说它无法找到一个名为“用户名”的属性。 bean 类 [java.util.ArrayList] 的无效属性“用户名”:bean 属性“用户名”不可读或具有无效的 getter?你对此有什么想法吗..
    • 尝试粘贴这段代码:ModelAndView view = new ModelAndView("userList"); view.addObject("user", new User()); view.addObject("userList", userList);返回视图;您必须添加两个对象:第一个是空的用户对象,第二个 - userList,用户列表
    【解决方案2】:

    在您的 JSP 中,您使用了两个模型属性,名为“user”和“userList”,它们基本上是 MODEL 对象的属性。

    当您第一次来到该页面时,Spring 会尝试从 Model 对象(MVC 中的 M)中查找名称为“user”和“userList”的属性值。因此,您需要在向用户显示页面之前设置“user”和“userList”的属性值(通常在将用户带到 JSP 页面的方法中),在您的情况下,您可以通过更改“getUSerList”方法如下:

            @RequestMapping(value="/userList")
            public ModelAndView getUserList(){
                 ModelAndView model = new ModelAndView("userList");
                 User user=new User();
                 List<User> userList = userService.getUserList();        
    
                 model.addObject("user",user);
                 model.addObject("userList",userList);
                 return model;      
            }
    

    现在,此方法将带您进入“userList”JSP,其中您的 MODEL 填充了“user”和“userList”属性值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-23
      • 2015-08-31
      • 2013-04-04
      • 2011-11-25
      相关资源
      最近更新 更多