首页 > 解决方案 > Spring bean 在控制器类中返回 NULL

问题描述

JSP 1

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Personal Info Page</title>
</head>
<body>
    <center>
        <h1>Personal Info Page</h1>
    </center>
    <center>
        <form:form method="post" modelAttribute="pcbInfo"
            action="/MyFirstWeb3/entrycontactinfo.do">
            <table>
                <tr>
                    <td>First Name:</td>
                    <td><form:input path="fName" /></td>
                </tr>
                <tr>
                    <td>Last Name:</td>
                    <td><form:input path="lName" /></td>
                </tr>

                <tr>
                    <td>Middle Name:</td>
                    <td><form:input path="mName" /></td>
                </tr>
                <tr>
                    <td>Gender:</td>
                    <td><form:radiobutton path="gender" value="M" />Male 
                    <form:radiobutton path="gender" value="F" />Female</td>
                </tr>
                <tr>
                    <td colspan="2"><input type="submit" value="Next" /></td>
                </tr>
            </table>

        </form:form>
    </center>
</body>
</html>

JSP2

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Contact Info Page</title>
</head>
<body>
    <center>
        <h1>Contact Info Page</h1>
    </center>
    <center>
        <form:form method="post" modelAttribute="pcbInfo"
            action="/MyFirstWeb3/entrybankinfo.do">
            <table>
                <tr>
                    <td>Address:</td>
                    <td><form:input path="address" /></td>
                </tr>
                <tr>
                    <td>City:</td>
                    <td><form:input path="city" /></td>
                </tr>

                <tr>
                    <td>State:</td>
                    <td><form:input path="state" /></td>
                </tr>
                <tr>
                    <td>Country:</td>
                    <td><form:input path="country" /></td>
                </tr>
                <tr>
                    <td>Phone:</td>
                    <td><form:input path="phone" /></td>
                </tr>


                <tr>
                    <td colspan="2"><input type="submit" value="Next" /></td>
                    </tr>
            </table>

        </form:form>
        </center>
</body>
</html>

JSP3

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Bank Info Page</title>
</head>
<body>
    <center>
        <h1>Bank Info Page</h1>
    </center>
    <center>
        <form:form method="post" modelAttribute="pcbInfo"
            action="/MyFirstWeb3/processaddpersoninfo.do">
            <table>
                <tr>
                    <td>Bank Name:</td>
                    <td><form:input path="bankName" /></td>
                </tr>
                <tr>
                    <td>Acc No:</td>
                    <td><form:input path="accNo" /></td>
                </tr>

                <tr>
                    <td>SSN:</td>
                    <td><form:input path="SSN" /></td>
                </tr>

                <tr>
                    <td colspan="2"><input type="submit" value="Save" /></td>
                    </tr>
            </table>

        </form:form>
        </center>
</body>

@控制器

package com.apex.mfw.controller;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.servlet.ModelAndView;

import com.apex.mfw.bo.BankInfoBO;
import com.apex.mfw.vo.PCBInfo;

@Controller
@SessionAttributes({"pcbInfo"})
public class AddDataController {

    BankInfoBO bankInfoBO;

    @RequestMapping(value = "/entrypersonalinfo.do")
    public ModelAndView entryPersonalInfo() {
        System.out.println("Serving the Personalinfo form");
        return new ModelAndView("personalinfo","pcbInfo", new PCBInfo());
    }


    @RequestMapping(value = "/entrycontactinfo.do")
    public ModelAndView entryContactInfo(@ModelAttribute PCBInfo pcbInfo, HttpServletRequest req) {
        System.out.println("Serving the contactinfo form");
        return new ModelAndView("contactinfo","pcbInfo",pcbInfo);


    }

    @RequestMapping(value = "/entrybankinfo.do")
    public ModelAndView entryBankInfo(@ModelAttribute PCBInfo pcbInfo) {
        System.out.println("Serving the bankinfo form");
        System.out.println("FNAME: " + pcbInfo.getfName());
        System.out.println("MNAME: " + pcbInfo.getmName());
        System.out.println("LNAME: " + pcbInfo.getlName());
        System.out.println("GENDER: " + pcbInfo.getGender());
        return new ModelAndView("bankinfo","pcbInfo",pcbInfo);

    }

    @RequestMapping(value = "/processaddpersoninfo.do")
    public ModelAndView addBankInfo(@ModelAttribute PCBInfo pcbInfo, Model model) {
        System.out.println("AddInfoController:addBankInfo():Start");
        System.out.println("FNAME: " + pcbInfo.getfName());
        System.out.println("MNAME: " + pcbInfo.getmName());
        System.out.println("LNAME: " + pcbInfo.getlName());
        System.out.println("GENDER: " + pcbInfo.getGender());

        System.out.println("\n\nAddress: " + pcbInfo.getAddress());
        System.out.println("City: " + pcbInfo.getCity());
        System.out.println("State: " + pcbInfo.getState());
        System.out.println("Country: " + pcbInfo.getCountry());
        System.out.println("Phone: " + pcbInfo.getPhone());



        bankInfoBO.addBankInfo(pcbInfo);

        System.out.println("AddInfoController:addBankInfo():End");
        return new ModelAndView("/MyFirstWeb3/entrypersonalinfo.do");
    }

    public AddDataController() {

    }

}

VOBean

package com.apex.mfw.vo;

public class PCBInfo {

    String fName;
    String lName;
    String mName;
    String gender;
    String address;
    String country;
    String city;
    String state;
    String phone;
    String bankName;
    String accNo;
    String SSN;

    public String getfName() {
        return fName;
    }
    public void setfName(String fName) {
        this.fName = fName;
    }
    public String getlName() {
        return lName;
    }
    public void setlName(String lName) {
        this.lName = lName;
    }
    public String getmName() {
        return mName;
    }
    public void setmName(String mName) {
        this.mName = mName;
    }
    public String getGender() {
        return gender;
    }
    public void setGender(String gender) {
        this.gender = gender;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    public String getCountry() {
        return country;
    }
    public void setCountry(String country) {
        this.country = country;
    }
    public String getCity() {
        return city;
    }
    public void setCity(String city) {
        this.city = city;
    }
    public String getState() {
        return state;
    }
    public void setState(String state) {
        this.state = state;
    }
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }
    public String getBankName() {
        return bankName;
    }
    public void setBankName(String bankName) {
        this.bankName = bankName;
    }
    public String getAccNo() {
        return accNo;
    }
    public void setAccNo(String accNo) {
        this.accNo = accNo;
    }
    public String getSSN() {
        return SSN;
    }
    public void setSSN(String sSN) {
        SSN = sSN;
    }   
}

这里我尝试从JSP 1 到2 到3 进行遍历,从上面的ValueObject bean 中的3 个页面中收集数据

但是 sys.out 行都打印 NULL 值.. 在互联网上尝试了几种解决方案后,我感觉非常棒。请帮我找出我做错了什么。

标签: javaspringspring-bootspring-mvc

解决方案


推荐阅读