从 getter 方法获取 null

Getting null from getters method

当我试图将它保存在一个列表中并在 servlet 中调用该列表时,我从 getters 方法中得到了 null。请帮我摆脱这个。提前致谢。 我首先添加 getter 和 setter 方法代码,然后是 DAO 代码,然后是 servlet 代码。

package com.vechile.model;


public class DriverSearchResult {

    private String Id;
    private String Name;
    private String Address;
    private String City;
    private String Contact;
    private String Country;
    public String getId() {
        return Id;
    }
    public void setId(String id) {
        Id = id;
    }
    public String getName() {
        return Name;
    }
    public void setName(String name) {
        Name = name;
    }
    public String getAddress() {
        return Address;
    }
    public void setAddress(String address) {
        Address = address;
    }
    public String getCity() {
        return City;
    }
    public void setCity(String city) {
        City = city;
    }
    public String getContact() {
        return Contact;
    }
    public void setContact(String contact) {
        Contact = contact;
    }
    public String getCountry() {
        return Country;
    }
    public void setCountry(String country) {
        Country = country;
    }


}

package com.vechile.dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.vechile.model.Driver;
import com.vechile.model.DriverSearchResult;
import com.vechile.model.Searching;
import com.vechile.utils.DBConnection;

public class SearchDAO {


    private String sql;
    private ResultSet rs, rs1;



    public boolean searchDriver(Searching searching) {
        try {

            sql = String.format("select * from adddriver where (%s) = '%s'",
                    searching.getInputList(), searching.getTxtField());

            rs = DBConnection.executeQuery(sql);

            if(rs.next()) {

                DriverSearchResult setResult = new DriverSearchResult();
                Integer id = new Integer(rs.getInt(1));
                String stringID = id.toString();
                setResult.setId(stringID);
                setResult.setName(rs.getString(1));
                setResult.setAddress(rs.getString(2));
                setResult.setCity(rs.getString(3));
                setResult.setContact(rs.getString(4));
                setResult.setCountry(rs.getString(5));

                return true;
            }
        } catch (Exception e) {
            e.getStackTrace();
        }
        return false;
    }
    public List<DriverSearchResult> getDriverResult(){


            List<DriverSearchResult> returnList = new ArrayList<DriverSearchResult>();
            DriverSearchResult getResult = new DriverSearchResult();
            String id = getResult.getId();
            String name = getResult.getName();
            String address = getResult.getAddress();
            String city = getResult.getCity();
            String contact = getResult.getContact();
            String country = getResult.getCountry();

            returnList.add(getResult);
            return returnList;

    }

    public boolean searchBooking(Searching searching) {
        try {
            sql = String.format(
                    "select * from booking where booking_id = '%s'",
                    searching.getBookingSearch());

            rs1 = DBConnection.executeQuery(sql);
            if (rs1.next()) {

                return true;

            }

        } catch (Exception e) {
            e.getStackTrace();
        }
        return false;
    }


}

protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        PrintWriter out = response.getWriter();
        String input = request.getParameter("list");
        String txtField = request.getParameter("txtField");
        String op = request.getParameter("op");
        String bSearch = request.getParameter("bookingSearch");



        try{
            if(op.equals("1")){
                Searching search1 = new Searching();
                search1.setInputList(input);
                search1.setTxtField(txtField);
                SearchDAO searchDAO = new SearchDAO();
                boolean searchDriver = searchDAO.searchDriver(search1);

                if(searchDriver){
                    DriverSearchResult searchResult = new DriverSearchResult();


                        System.out.println(searchResult.getId());

                    //response.sendRedirect("driversearchresult.jsp");


                    //response.sendRedirect("SearchOutPut.jsp?op=" + search1.getPassingValue());

                }
                else {
                    out.println("<html>");
                    out.println("<head>");
                    out.println("<script>");
                    out.println("alert('Record Not Found!')");
                    out.println("</script>");
                    out.println("<META HTTP-EQUIV= Refresh CONTENT=0;URL=SearchDriver.jsp>");
                }

            }

发生这种情况是因为您在方法 searchDriver 中填充了 DriverSearchResult 对象,然后忘记了该对象。然后在另一种方法中,您创建了 class DriverSearchResult 的另一个实例,并尝试在没有事先初始化的情况下从中提取值。这就是它给你空值的原因,因为你永远不会在这个新创建的实例上调用设置器。

我猜你想保存在 searchDriver 方法中创建的 DriverSearchResult 实例,然后在其他方法中使用它而不是创建新的方法。

更新: 我希望代码片段中的想法很清楚:

public class SearchDAO {
    private List<DriverSearchResult> resultList = new ArrayList<>();


    public boolean searchDriver(Searching searching) {
        try {
            // ...
            if(rs.next()) {
                DriverSearchResult setResult = new DriverSearchResult();
                // ...
                resultList.add(setResult); // <<<<<<<<<
                return true;
            }
        } catch (Exception e) {
            e.getStackTrace();
        }
        return false;
    }

    public List<DriverSearchResult> getDriverResult(){
        return resultList; // <<<<
    }
}