0

当使用 Spring MVC、JDBC(版本 2.5)在应用程序中成功登录时,出现错误“Bean name 'EmpPersonalBean' 的 BindingResult 或普通目标对象可用作请求属性”。我将 loginpage 转发到 jsp/UserPage.jsp

我的文件夹结构是

WEB-ROOT      
  |__JSP  (folder)            
      |__user   (sub folder)                    
           |_userdashboardpage.jsp      
  |__loginpage.jsp  (In Webroot)    
  |__web.xml 

控制器:用户控制器类

在这个控制器中调用 onsubmit 方法成功后我重定向了页面。检查下面的代码片段

public ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response,Object command,BindException errors) throws Exception {       
         String username="",password="";
         username=request.getParameter("username");
         password=request.getParameter("password");
        UserBean ubean=null;
        HttpSession session=request.getSession(true);
         try{
             ubean=userservice.chkUsername(username,password);
             System.out.println("Information"+ubean.getUsername());
             }catch(DataException ex){
             ex.printStackTrace();

             //throw ex;
              }
        session.setAttribute("User",ubean);
        ModelAndView mv=new ModelAndView(("forward:jsp/UserPage.jsp"));
        return  mv;
    }

在 UserPage.jsp

<%@ page language="java" import="com.aims.bean.*" contentType="text/html;charset=utf-8" pageEncoding="UTF-8"%>
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
<%@taglib uri="http://www.springframework.org/tags" prefix="spring" %>
<%@taglib uri="/WEB-INF/tld/c.tld" prefix="c" %>
<html>
<head>
<title>AAI</title>
</head>
<body>
<form:form method="post" modelAttribute="EmpPersonalBean" action="userpage.htm">
<table>
<tr>
    <td>Welcome <%=((UserBean)session.getAttribute("User")).getUsername()%></td>
</tr>
<tr>
        <tr>
        <td>Department</td>
        <td><form:select path="deparment">
                      <form:option value="NONE" label="--- Select ---" />
                      <form:options items="${deparmentList}" />
                       </form:select>
        </td>
    </tr>
</tr>
</table>
</form:form>
</body>
</html>

在用户页面中,尝试使用 UserDBBoardController 中的 referenceData 方法加载部门列表。

public class UserDBBoardController  extends SimpleFormController{
    private static final Log log=new Log(UserDBBoardController.class);
    private UserService userservice;
    public void setUserservice(UserService userservice) {
        this.userservice = userservice;
    }
    public UserDBBoardController(){
        setCommandClass(EmpPersonalBean.class);
        setCommandName("EmpPersonalBean");

    }
    protected Map referenceData(HttpServletRequest request) throws Exception {
        log.info("UserDBBoardController======================referenceData");
        Map referenceData = new HashMap();
        Map deparementList=new HashMap();
        deparementList=userservice.getDeparmentList();
        referenceData.put("deparmentList",deparementList);
        return referenceData;

    }
}

调度程序 Servlet.xml:-

<?xml version="1.0" encoding="UTF-8"?>
                <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    <property name="mappings">
        <props><prop key="/loginpage.htm">UserController</prop>
        <prop key="/userpage.htm">UserDBBoardController</prop></props>
    </property>
    </bean>
    <import resource="application-context.xml"/>
    <bean id="User" class="com.aims.bean.UserBean" scope="session" />
    <bean id="UserController" class="com.epis.controllers.UserController"  >
    <property name="userservice" ref="userservice"/>
    <property name="sessionForm"><value>true</value></property>
    <property name="commandName"><value>UserBean</value></property>
    <property name="commandClass"><value>com.aims.bean.UserBean</value></property>
    <property name="validator"><ref bean="userformValidator"/></property> 
    <property name="formView"><value>loginpage</value></property>
    <property name="successView"><value>UserPage</value></property>
    </bean>
    <bean id="UserDBBoardController" class="com.epis.controllers.UserDBBoardController"  >
    <property name="userservice" ref="userservice"/>
    <property name="sessionForm"><value>true</value></property>
    <property name="commandName"><value>EmpPersonalBean</value></property>
    <property name="commandClass"><value>com.aims.bean.EmpPersonalBean</value></property>

    </bean>

此错误消息来自加载用户页面中的部门列表?如何解决此问题?请帮助。

另一个疑惑是为什么spring MVC提供了太多类型的控制器?

4

1 回答 1

1

尝试对同样接受模型名称和模型对象的 ModelAndView 使用此构造函数。 http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/web/servlet/ModelAndView.html#ModelAndView(java.lang.String, java.lang.String, java.lang.目的)

于 2012-06-07T14:44:13.220 回答