Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JSP页面中显示数据时获取java.lang.NumberFormatException_Java_Spring_Hibernate_Spring Mvc - Fatal编程技术网

在JSP页面中显示数据时获取java.lang.NumberFormatException

在JSP页面中显示数据时获取java.lang.NumberFormatException,java,spring,hibernate,spring-mvc,Java,Spring,Hibernate,Spring Mvc,我正在使用Hibernate和SpringMVC。我试图从两个表中获取信息,并将其显示在jsp页面中。这是我的桌子: 表名:学生 student_id studentName 1. Jason Stathum @Entity @Table(name = "student") public class Student { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name="stude

我正在使用Hibernate和SpringMVC。我试图从两个表中获取信息,并将其显示在jsp页面中。这是我的桌子:

表名:学生

student_id    studentName
  1.           Jason Stathum
@Entity
@Table(name = "student")
public class Student {

@Id 
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="student_id", nullable= false)
private Integer studentId;
private String studentName;

@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name="student_id", referencedColumnName="student_id")
private List<StudentDetails> studentDetails = new ArrayList<StudentDetails>();

// Getters and Setters

public Integer getStudentId() {
    return studentId;
}
public void setStudentId(Integer studentId) {
    this.studentId = studentId;
}
public String getStudentName() {
    return studentName;
}

public void setStudentName(String studentName) {
    this.studentName = studentName;
}
public List<StudentDetails> getStudentDetails() {
    return studentDetails;
}
public void setStudentDetails(List<StudentDetails> studentDetails) {
    this.studentDetails = studentDetails;
}
<c:if test="${!empty student}">
<table class="studentTable">
<tr>
    <th>Sl#</th>
    <th>Name</th>
    <th>Father</th>
    <th>Mother</th>             

</tr>
<c:set var="count" value="0" scope="page" />
<c:forEach items="${student}" var="row">

    <c:set var="count" value="${count + 1}" scope="page"/>
    <tr>
        <td>${count}</td>
        <td>${row.studentName}</td>         
        <td>${row.studentDetails.FatherName}</td> <--- this is line 29
        <td>${row.studentDetails.MotherName}</td>
    </tr>
 </c:forEach>
</table>
</c:if>
表名:studentdetails

studentDetailsid   FatherName   MotherName    student_id
   1                 Mr.X          Mrs. Y        1
@Entity
@Table(name = "studentDetails")
public class StudentDetails {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer studentDetailsId;
private String FatherName;
private String MotherName;

// Getters and Setters

public Integer getStudentDetailsId() {
    return studentDetailsId;
}
public void setStudentDetailsId(Integer studentDetailsId) {
    this.studentDetailsId = studentDetailsId;
}
public String getFatherName() {
    return FatherName;
}
public void setFatherName(String fatherName) {
    FatherName = fatherName;
}
public String getMotherName() {
    return MotherName;
}
public void setMotherName(String motherName) {
    MotherName = motherName;
}
在我的JSP页面中,我试图显示如下数据:

 Sl#   Student              Father     Mother
 1     Jason Stathum        Mr.X       Mrs.Y
当我运行应用程序查看数据时,会收到以下错误消息:

HTTP状态500-在第29行处理JSP页面/WEB-INF/views/studentlist.JSP时发生异常 根本原因 java.lang.NumberFormatException:用于输入字符串:“父名称” java.lang.NumberFormatException.forInputString(未知源) java.lang.Integer.parseInt(未知源) java.lang.Integer.parseInt(未知源)。。。。还有很多其他的线路

我已经在下面列出了我的代码,你能告诉我我做错了什么吗

多谢各位

实体:学生

student_id    studentName
  1.           Jason Stathum
@Entity
@Table(name = "student")
public class Student {

@Id 
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="student_id", nullable= false)
private Integer studentId;
private String studentName;

@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name="student_id", referencedColumnName="student_id")
private List<StudentDetails> studentDetails = new ArrayList<StudentDetails>();

// Getters and Setters

public Integer getStudentId() {
    return studentId;
}
public void setStudentId(Integer studentId) {
    this.studentId = studentId;
}
public String getStudentName() {
    return studentName;
}

public void setStudentName(String studentName) {
    this.studentName = studentName;
}
public List<StudentDetails> getStudentDetails() {
    return studentDetails;
}
public void setStudentDetails(List<StudentDetails> studentDetails) {
    this.studentDetails = studentDetails;
}
<c:if test="${!empty student}">
<table class="studentTable">
<tr>
    <th>Sl#</th>
    <th>Name</th>
    <th>Father</th>
    <th>Mother</th>             

</tr>
<c:set var="count" value="0" scope="page" />
<c:forEach items="${student}" var="row">

    <c:set var="count" value="${count + 1}" scope="page"/>
    <tr>
        <td>${count}</td>
        <td>${row.studentName}</td>         
        <td>${row.studentDetails.FatherName}</td> <--- this is line 29
        <td>${row.studentDetails.MotherName}</td>
    </tr>
 </c:forEach>
</table>
</c:if>
控制器

@RequestMapping(value="studentlist", method = RequestMethod.GET)
public String getRecords(Model map)
{       
    List<Student> student = studentService.getAll();
    map.addAttribute("student", student);
    return "studentlist";       
}
@RequestMapping(value=“studentlist”,method=RequestMethod.GET)
公共字符串getRecords(模型映射)
{       
List student=studentService.getAll();
map.addAttribute(“学生”,学生);
返回“学生名单”;
}
StudentDaoImpl

@Override
@SuppressWarnings("unchecked")
public List<Student> getAll() {
    return getSessionFactory().openSession().createQuery("FROM Student").list();
}
@覆盖
@抑制警告(“未选中”)
公共列表getAll(){
返回getSessionFactory().openSession().createQuery(“来自学生”).list();
}
JSP页面:学生列表

student_id    studentName
  1.           Jason Stathum
@Entity
@Table(name = "student")
public class Student {

@Id 
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="student_id", nullable= false)
private Integer studentId;
private String studentName;

@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name="student_id", referencedColumnName="student_id")
private List<StudentDetails> studentDetails = new ArrayList<StudentDetails>();

// Getters and Setters

public Integer getStudentId() {
    return studentId;
}
public void setStudentId(Integer studentId) {
    this.studentId = studentId;
}
public String getStudentName() {
    return studentName;
}

public void setStudentName(String studentName) {
    this.studentName = studentName;
}
public List<StudentDetails> getStudentDetails() {
    return studentDetails;
}
public void setStudentDetails(List<StudentDetails> studentDetails) {
    this.studentDetails = studentDetails;
}
<c:if test="${!empty student}">
<table class="studentTable">
<tr>
    <th>Sl#</th>
    <th>Name</th>
    <th>Father</th>
    <th>Mother</th>             

</tr>
<c:set var="count" value="0" scope="page" />
<c:forEach items="${student}" var="row">

    <c:set var="count" value="${count + 1}" scope="page"/>
    <tr>
        <td>${count}</td>
        <td>${row.studentName}</td>         
        <td>${row.studentDetails.FatherName}</td> <--- this is line 29
        <td>${row.studentDetails.MotherName}</td>
    </tr>
 </c:forEach>
</table>
</c:if>

Sl#
名称
父亲
母亲
${count}
${row.studentName}

${row.studentDetails.FatherName}在JSP中,变量
row
表示
Student
对象。因此,当您说
row.studentDetails
时,您现在正在获取
java.util.List
当您尝试访问此列表中的任何内容时,JSP假定您正在尝试使用提供的索引获取列表中的一个元素

所以它就像
list.indexNumber
,所以JSP假设
FatherName
MotherName
为数字,并尝试将它们转换为整数并获取异常

要解决此问题,您必须遍历列表:

<c:forEach items="${srow.studentDetails}" var="details">
  ${details.FatherName}
  ${details.MotherName}
</c:forEach>

在JSP中,变量
表示
学生
对象。因此,当您说
row.studentDetails
时,您现在正在获取
java.util.List
当您尝试访问此列表中的任何内容时,JSP假定您正在尝试使用提供的索引获取列表中的一个元素

所以它就像
list.indexNumber
,所以JSP假设
FatherName
MotherName
为数字,并尝试将它们转换为整数并获取异常

要解决此问题,您必须遍历列表:

<c:forEach items="${srow.studentDetails}" var="details">
  ${details.FatherName}
  ${details.MotherName}
</c:forEach>

问题是您试图引用
列表
对象的属性

${row.studentDetails}
=
列表

JSTL正在尝试将父名转换为一个数字,以便在列表中获取该索引


要解决此问题,您可以执行
${row.studentDetails[0].fatherName}
或者您可以在
Student
中放置一个名为
getDefaultStudentData()
的方法,该方法将返回第一个或“首选”学生详细信息对象,然后像
${row.defaultStudentData.fatherName}
那样引用它。当然,您也可以更改输出以处理每个学生的多个学生详细信息☺

问题是您试图引用
列表
对象的属性

${row.studentDetails}
=
列表

JSTL正在尝试将父名转换为一个数字,以便在列表中获取该索引


要解决此问题,您可以执行
${row.studentDetails[0].fatherName}
或者您可以在
Student
中放置一个名为
getDefaultStudentData()
的方法,该方法将返回第一个或“首选”学生详细信息对象,然后像
${row.defaultStudentData.fatherName}
那样引用它。当然,您也可以更改输出以处理每个学生的多个学生详细信息☺

发布整个stacktrace可能有助于找到根本原因。发布整个stacktrace可能有助于找到根本原因。非常感谢您的回复。我尝试了您的代码,但这次运行应用程序时出现了以下错误:
根本原因javax.el.PropertyNotFoundException:在com.spring.org.model.StudentDetails javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:237)类型上找不到属性'FatherName'
如果您在
StudentDetail
对象中定义了这些属性,并为该属性使用了适当的getter和setter方法,那么您不应该得到此异常,因此请验证一下是否所有属性都存在。我想我的getter和setter方法是可以的。我已经用getter和setter代码更新了上面的问题。您认为我在映射表时可能有问题吗?非常感谢您遵循的命名约定不正确,根据Jave Beans,属性名称应该是
fatherName
motherName
。而且,即使没有对Java代码进行任何修改,您也可以访问它们,因为您有具有适当命名约定的getter和setter方法。我已经更新了我的答案,非常感谢你的回复。我尝试了您的代码,但这次运行应用程序时出现了以下错误:
根本原因javax.el.PropertyNotFoundException:在com.spring.org.model.StudentDetails javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:237)类型上找不到属性'FatherName'
如果您在
StudentDetail
对象中定义了这些属性,并为该属性使用了适当的getter和setter方法,那么您不应该得到此异常,因此请验证一下是否所有属性都存在。我想我的getter和setter方法是可以的。我已经更新了我的问题