Java 列表值是打印地址而不是值

Java 列表值是打印地址而不是值,java,jstl,Java,Jstl,我有下面的DAO文件 package org.DAO; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.Statement; import java.util.ArrayList; import jav

我有下面的DAO文件

package org.DAO;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.RequestDispatcher;

import org.bean.UserBean;
import org.code.general.DBConnection;

public class GetDataDAO {
    DBConnection dbConnection = new DBConnection();

    public List<UserBean> list() throws Exception {
        List<UserBean> userBeans = new ArrayList<UserBean>();
        try {
            Connection conn = dbConnection.conn;
            Statement stmt = dbConnection.stmt;
            ResultSet rs = dbConnection.rs;
            PreparedStatement ps = dbConnection.ps;
            String excelPath = dbConnection.excelPath;
            String queryString = null;
            dbConnection.createClassForName();
            conn = DriverManager.getConnection(
                    "jdbc:odbc:Driver={Microsoft Excel Driver (*.xls)};DBQ=" + excelPath + "; READONLY=FALSE;");
            System.out.println("Connecting to database…");
            System.out.println("Oracle JDBC Driver Registered!");
            if (conn != null) {
                System.out.println("You made it, take control your database now!");
            } else {
                System.out.println("Failed to make connection!");
            }
            stmt = conn.createStatement();
            queryString = "Select * from [report1448039568905$] where ([Case Owner] = 'SSHD' or [Case Owner] = 'Hyderabad Operations' or [Case Owner] = 'Customer Service- Core')";
            rs = stmt.executeQuery(queryString);
            ResultSetMetaData rsmd = rs.getMetaData();
            int rowCount = rsmd.getColumnCount();
            System.out.println("bno of cols are " + rsmd.getColumnCount());
            for (int i = 0; i < rowCount; i++) {
                System.out.print(rsmd.getColumnName(i + 1) + "  \t");
                System.out.println(rsmd.getColumnTypeName(i + 1));
            }

            while (rs.next()) {
                UserBean userBean = new UserBean();
                userBean.setCaseNumber(rs.getString(1));
                userBean.setCaseOwner(rs.getString(2));
                userBean.setStatus(rs.getString(4));
                userBean.setIssue(rs.getString(5));
                userBean.setReason(rs.getString(6));
                userBean.setDateOpened(rs.getString(7));
                userBean.setAge(rs.getInt(8));
                userBeans.add(userBean);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return userBeans;
    }
}
但我需要的不是这个,而是那里的精确值。请让我知道我哪里出了问题,我如何解决它

您的对象是List userBeans类型,您正在尝试从userBeans[0]获取值。toString显然会为您提供列表中第一个元素的哈希代码

若您想从列表中的用户bean中获取案例编号的值,您可能应该使用userBeans[0].getCaseNumber;我假设您有案例编号的getter。

您必须用塞尔维亚语重写toString方法。否则将调用默认的toString方法。比如说

@Override
public String toString() {
    return this.caseNumber + " " + this.caseOwner;
}
一些IDEEclipse、intellij,。。。具有创建toString方法的快捷方式。例如,在eclipse中,它是

right click -> source -> generate toString()...

什么的确切价值?UserBean有7个我们知道的属性。你打电话来是想试试看。那会叫。。。托斯特林。所以,若您还并没有重写toString,它将默认为对象的toString实现。如果要显示UserBean的案例号,请使用。。。userBeans[0]。caseNumber,而不是userBeans[0]。toString。说真的,休息一下,读一本不错的Java书/教程,然后读一本JSP/JavaEE书/教程。嗨,我的Bean类中有这个,你想让我用这个类更新我的问题吗?是的,请。但只需提供所需的最少代码,例如不提供getter和setter,是吗?为什么不告诉OP只使用${userBeans[0].caseNumber}?我可能不推荐这种方法,因为UserBean可能有一些特定的用途,其中可能包含特定于用户的详细信息。因此,重写toString方法只会给出case number可能不适用于将来的增强,因为您正在增加对toString方法的依赖性如果他只想要case number属性,使用getter更好。但是toString的目的不是返回单个属性,而是返回对象的字符串表示形式。我的例子太简单了,我会编辑它。嗨,谢谢你,这正是我想要的。再次感谢@如果你觉得有用的话,请考虑接受这个答案。我有一个小问题,有一种方法我可以以数组的形式得到它,即代替UsBeBeS [0 ]。类似于userBeans[0]。获取[0];?是的,您可以将整个数组设置为属性并使用forEach jsp scriptlet,这个问题将对您有所帮助。。
org.bean.UserBean@16c8f41
@Override
public String toString() {
    return this.caseNumber + " " + this.caseOwner;
}
right click -> source -> generate toString()...