Java 列表值是打印地址而不是值
我有下面的DAO文件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
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()...