簡體   English   中英

Spring MVC應用程序異常

[英]Spring MVC Application Exception

我是Spring的新手,過去兩天遇到了一些錯誤。 希望有人幫助和解決問題。 我也用谷歌搜索該錯誤,但無法理解該錯誤的根本原因。 我還沒有在春季學習有關注釋的內容,因此無法在線理解大多數示例。

程序中發生錯誤:

java.lang.IllegalStateException :既不BindingResult也不對bean名稱純目標對象“ login ”可作為請求屬性

這是應用程序的代碼:

data.jsp :(這是一個視圖頁面,用於接受來自用戶的數據)

<form:form commandName="login" method="POST" name="login">
Username:<form:input path="name"/> 
<font color="red"><form:errors path="name"/></font><br/><br/>
<input type="submit" value="Login"/>
</form:form>

LoginFormController.java :(用於處理請求的控制器頁面)

package Controller;
import model.Student;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;

public class LoginFormController extends SimpleFormController {

    public LoginFormController() {
        //Initialize controller properties here or 
        //in the Web Application Context

        setCommandClass(Student.class);
        setCommandName("login");
        setSuccessView("success");
        setFormView("data");
     }
     @Override
     protected ModelAndView onSubmit(Object command) throws Exception {
         Student s1= (Student)command;
         ModelAndView mv = new ModelAndView(getSuccessView());
         mv.addObject("message", "Hello! "+s1.getName());
         return mv;
     }

}

Student.java:(java模型類)

package model;

public class Student {
    String name;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Student() {
    }
    public Student(String name) {
        this.name = name;
    }
}

dispatcher-servlet.xml :(xml文件描述)

<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/>
<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    <property name="mappings">        
        <props>
            <prop key="index.htm">indexController</prop>
            <prop key="data.htm">dataController</prop>
            <prop key="/login.htm">loginDataController</prop>
        </props>           
    </property>
</bean>
<bean id="viewResolver"
      class="org.springframework.web.servlet.view.InternalResourceViewResolver"
      p:prefix="/WEB-INF/jsp/"
      p:suffix=".jsp" />
<bean name="dataController"
      class="org.springframework.web.servlet.mvc.ParameterizableViewController"
      p:viewName="data" />    
<bean name="indexController"
      class="org.springframework.web.servlet.mvc.ParameterizableViewController"
      p:viewName="index" />    
<bean name="Student" class="model.Student"/> 
<bean id="loginDataController" class="Controller.LoginFormController"/>

誰能提供幫助找到解決方案?

<form:form commandName="login" method="POST" name="login">

spring的form標簽的commandName屬性是在其中公開表單對象的model屬性的名稱。默認為'command'。
資料來源: Spring Form TLD文件

現在回到您的情況:
“登錄”應作為您未使用的模型屬性(請求屬性)可用,因此會導致您的錯誤。

因此,將您的onSubmit方法修改為

@Override
     protected ModelAndView onSubmit(Object command) throws Exception {
         Student s1= (Student)command;
         ModelAndView mv = new ModelAndView(getSuccessView());
         mv.addObject("login",s1);
         mv.addObject("message", "Hello! "+s1.getName());
         return mv;
     }

我還建議您以Spring形式閱讀此Java Dzone教程

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM