Struts 1.2 - HTML:SELECT problem
Hi Everyone,
I'm new at using Struts. I'm using MyEclipse version 6 in Windows XP
and trying to have a dropdown list in a jsp with Struts. I tried using
the html:select tag but keep getting an error:
javax.servlet.ServletException: javax.servlet.jsp.JspException: Cannot
find bean under name org.apache.struts.taglib.html.BEAN
Also:
org.apache.jasper.JasperException: An exception occurred processing
JSP page /jsp/invoiceList.jsp at line 14
11:
12: <body>
13:
14: <html:select property="staff_number">
15: <html:options property="members" />
16: </html:select>
17:
The code is below. I'm not sure how to setup the select (options)
right obviously since I keep getting these error messages. The
contents in the collection (a list of type Staff) are correct and I
can display them to the console. So the attribute members has data.
I'm also able to display the contents of members to a table in the jsp
page using iterate. Hence the problem is only getting the html:select
to work. I have tried different variations and always complains about
some Bean without much detail or clue to help. The code is provided
below.
Any help is appreciated. Thanks in advance.
Best regards,
Rudi
=============================================
InvoiceList.jsp
<%@ page language="java" pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean"
prefix="bean"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html"
prefix="html"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic"
prefix="logic" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-nested"
prefix="nested" %>
<html>
<head>
<title>Show invoice list</title>
</head>
<body>
<html:select property="staff_number">
<html:options property="members" />
</html:select>
<table border="1">
<tbody>
<logic:notEmpty name="invoiceListForm" property="members">
<logic:iterate name="invoiceListForm" property="members"
id="staff">
<tr>
<%-- print out the book informations --%>
<td><bean:write name="staff" property="staff_number" /></td>
<td><bean:write name="staff" property="staff_name" /></td>
</tr>
</logic:iterate>
</logic:notEmpty>
</tbody>
</table>
</body>
</html>
=============================================
Staff.java
package com.blablabla;
public class Staff implements java.io.Serializable {
private static final long serialVersionUID = 1L;
private String staff_number;
private String staff_name;
protected Staff() {}
public Staff(String staff_number, String staff_name) {
this.staff_number = staff_number;
this.staff_name = staff_name;
}
public String getStaff_number() {
return staff_number;
}
public void setStaff_number(String staff_number) {
this.staff_number = staff_number;
}
public String getStaff_name() {
return staff_name;
}
public void setStaff_name(String staff_name) {
this.staff_name = staff_name;
}
}
=============================================
InvoiceListAction.java
package com.blablabla.struts.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.blablabla.*;
import com.blablabla.struts.form.InvoiceListForm;
import com.blablabla.sirs.hibernate.*;
import org.hibernate.*;
import org.hibernate.criterion.Projections;
import java.util.*;
public class InvoiceListAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
InvoiceListForm invoiceListForm = (InvoiceListForm) form;
SessionFactory factory = null;
Session session = null;
try {
factory = HibernateSessionFactory.getSessionFactory();
session = (Session) factory.openSession();
List<Staff>staffmbrs = session.createQuery("from Staff
").list();
System.out.println("Query Size = " + staffmbrs.size());
if (staffmbrs.isEmpty()) {
System.out.println("Could not get book using embedded
query");
} else {
for (int i = 0; i < staffmbrs.size(); i++) {
System.out.print("The name is " +
staffmbrs.get(i).getStaff_number());
System.out.print(" ");
System.out.println(staffmbrs.get(i).getStaff_name());
}
}
invoiceListForm.reset(mapping, request);
invoiceListForm.setMembers(staffmbrs);
invoiceListForm.setMemberSelected("GC");
} finally {
session.close();
}
return mapping.findForward("showList");
}
}
=============================================
InvoiceListForm.java
package com.blablabla.struts.form;
import java.util.ArrayList;
import java.util.Collection;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import com.blablabla.Staff;
public class InvoiceListForm extends ActionForm {
private static final long serialVersionUID = 1L;
private Collection<Staff> members;
private String memberSelected;
public Collection<Staff> getMembers() {
return members;
}
public void setMembers(Collection<Staff> staffmembers) {
this.members = staffmembers;
}
public String getMemberSelected() {
return memberSelected;
}
public void setMemberSelected(String memberSelected) {
this.memberSelected = memberSelected;
}
public void reset(ActionMapping mapping, HttpServletRequest request)
{
members = new ArrayList<Staff>();
memberSelected = null;
}
}