0

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

“ Bean 名称 '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>
4

2 回答 2

0

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

modelAndView.addObject("user", new User());
于 2013-08-13T20:48:45.000 回答
0

在您的 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”属性值。

于 2013-08-27T15:01:13.333 回答