无法使用 JSTL 访问 bean
Unable to access beans using JSTL
请看下面的代码
<c:forEach var="patientBean" items="${requestScope['PatientBean']}">
<tr>
<td><img src="images/img1.jpg" width="30px" height="30px"/></td>
<td><c:out value="${patientBean.FirstName}"/><c:out value="${patientBean.MiddleName}"/><c:out value="${patientBean.LastName}"/></td>
<td><c:out value="${patientBean.dob}"/></td>
<td><c:out value="${patientBean.sex}"/></td>
<td><form name="form1" method="post" action="allergies.jsp">
<label>
<input type="submit" name="view" id="1" value="View">
</label>
<input name="idPatient" type="hidden" value=<c:out value="${patientBean.idPatient}"/>>
</c:forEach>
我有一个名为 PatientBean
的 bean。在 servlet 中,许多 PatientBean
被填充并添加到 ArrayList
。上面的代码显示了我如何尝试访问 JSP 中的 ArrayList
并获取其中的 beans 数据。
下面是Servlet,它将请求转发给JSP
request.setAttribute("patientBean", patientBeanList);
RequestDispatcher requestDispatcher = request.getRequestDispatcher("patients.jsp");
requestDispatcher.forward(request, response);
不过真的不行。没有显示数据。我做错了什么?
下面是PatientBean
/**
*
* @author Yohan
*/
public class PatientBean implements Serializable {
private int idPatient;
private String firstName;
private String middleName;
private String lastName;
private Date dob;
private String sex;
/**
* @return the idPatient
*/
public int getIdPatient() {
return idPatient;
}
/**
* @return the firstName
*/
public String getFirstName() {
return firstName;
}
/**
* @return the middleName
*/
public String getMiddleName() {
return middleName;
}
/**
* @return the lastName
*/
public String getLastName() {
return lastName;
}
/**
* @return the dob
*/
public Date getDob() {
return dob;
}
/**
* @return the sex
*/
public String getSex() {
return sex;
}
/**
* @param idPatient the idPatient to set
*/
public void setIdPatient(int idPatient) {
this.idPatient = idPatient;
}
/**
* @param firstName the firstName to set
*/
public void setFirstName(String firstName) {
this.firstName = firstName;
}
/**
* @param middleName the middleName to set
*/
public void setMiddleName(String middleName) {
this.middleName = middleName;
}
/**
* @param lastName the lastName to set
*/
public void setLastName(String lastName) {
this.lastName = lastName;
}
/**
* @param dob the dob to set
*/
public void setDob(Date dob) {
this.dob = dob;
}
/**
* @param sex the sex to set
*/
public void setSex(String sex) {
this.sex = sex;
}
}
你有
<c:forEach var="patientBean" items="${requestScope['PatientBean']}">
但是
request.setAttribute("patientBean", patientBeanList);
请注意,属性名称区分大小写。所以 ${requestScope['PatientBean']}
不会找到名为 patientBean
.
的请求属性
因为你之前有
<td><c:out value="${patientBean.dob}"/></td>
其中 patientBean
实际上指的是 patientBeanList
,您需要重命名一些内容。
您的请求属性应称为 patientBeans
。
request.setAttribute("patientBeans", patientBeanList);
然后您可以访问它
<c:forEach var="patientBean" items="${patientBeans}">
您的 var
现在允许您使用 ${patientBean}
来引用 items
中的各个元素。
请看下面的代码
<c:forEach var="patientBean" items="${requestScope['PatientBean']}">
<tr>
<td><img src="images/img1.jpg" width="30px" height="30px"/></td>
<td><c:out value="${patientBean.FirstName}"/><c:out value="${patientBean.MiddleName}"/><c:out value="${patientBean.LastName}"/></td>
<td><c:out value="${patientBean.dob}"/></td>
<td><c:out value="${patientBean.sex}"/></td>
<td><form name="form1" method="post" action="allergies.jsp">
<label>
<input type="submit" name="view" id="1" value="View">
</label>
<input name="idPatient" type="hidden" value=<c:out value="${patientBean.idPatient}"/>>
</c:forEach>
我有一个名为 PatientBean
的 bean。在 servlet 中,许多 PatientBean
被填充并添加到 ArrayList
。上面的代码显示了我如何尝试访问 JSP 中的 ArrayList
并获取其中的 beans 数据。
下面是Servlet,它将请求转发给JSP
request.setAttribute("patientBean", patientBeanList);
RequestDispatcher requestDispatcher = request.getRequestDispatcher("patients.jsp");
requestDispatcher.forward(request, response);
不过真的不行。没有显示数据。我做错了什么?
下面是PatientBean
/**
*
* @author Yohan
*/
public class PatientBean implements Serializable {
private int idPatient;
private String firstName;
private String middleName;
private String lastName;
private Date dob;
private String sex;
/**
* @return the idPatient
*/
public int getIdPatient() {
return idPatient;
}
/**
* @return the firstName
*/
public String getFirstName() {
return firstName;
}
/**
* @return the middleName
*/
public String getMiddleName() {
return middleName;
}
/**
* @return the lastName
*/
public String getLastName() {
return lastName;
}
/**
* @return the dob
*/
public Date getDob() {
return dob;
}
/**
* @return the sex
*/
public String getSex() {
return sex;
}
/**
* @param idPatient the idPatient to set
*/
public void setIdPatient(int idPatient) {
this.idPatient = idPatient;
}
/**
* @param firstName the firstName to set
*/
public void setFirstName(String firstName) {
this.firstName = firstName;
}
/**
* @param middleName the middleName to set
*/
public void setMiddleName(String middleName) {
this.middleName = middleName;
}
/**
* @param lastName the lastName to set
*/
public void setLastName(String lastName) {
this.lastName = lastName;
}
/**
* @param dob the dob to set
*/
public void setDob(Date dob) {
this.dob = dob;
}
/**
* @param sex the sex to set
*/
public void setSex(String sex) {
this.sex = sex;
}
}
你有
<c:forEach var="patientBean" items="${requestScope['PatientBean']}">
但是
request.setAttribute("patientBean", patientBeanList);
请注意,属性名称区分大小写。所以 ${requestScope['PatientBean']}
不会找到名为 patientBean
.
因为你之前有
<td><c:out value="${patientBean.dob}"/></td>
其中 patientBean
实际上指的是 patientBeanList
,您需要重命名一些内容。
您的请求属性应称为 patientBeans
。
request.setAttribute("patientBeans", patientBeanList);
然后您可以访问它
<c:forEach var="patientBean" items="${patientBeans}">
您的 var
现在允许您使用 ${patientBean}
来引用 items
中的各个元素。