I was using scriptlets earlier, but now I switched to the mvc. I am not able to retrieve values on to the JSP page and getting errors:
javax.el.PropertyNotFoundException: Property 'tname' not found on type java.lang.String
Code of the Bean:
public class regForm extends org.apache.struts.validator.ValidatorForm implements Iprafunctions {
private String tname = null;
private String tfee = null;
public String getTfee() {
return tfee;
}
public void setTfee(String tfee) {
this.tfee = tfee;
}
public String getTname() {
return tname;
}
public void setTname(String tname) {
this.tname = tname;
}
public regForm() {
super();
}
}
Action controller:
public ActionForward mvc(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
regForm reg = (regForm) form;
String sql = "Select tname,tfee from addtest order by tname";
ResultSet rs = SQLC.getData(sql, null);
Collection myBeans = new ArrayList();
while (rs.next()) {
String testname = rs.getString("tname");
String testfee = rs.getString("tfee");
reg.setTname(testname);
reg.setTfee(testfee);
myBeans.add(reg.getTname());
myBeans.add(reg.getTfee());
}
request.setAttribute("myBeans", myBeans);
return mapping.findForward(SUCCESS);
}
Access in JSP Page
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<table>
<tr><td>Name</td><td>Fee</td></tr>
<c:forEach var="reg" items="${myBeans}">
<tr>
<td><c:out value="${reg.tname}"></c:out></td>
<td><c:out value="${reg.tfee}"></c:out></td>
</tr>
</c:forEach>
</table>
I think you are adding the names and the fee directly to the arraylist, but you should be adding the whole
regForm
object in the arraylist.Instead of the below code
you need to do like
moreover dont use the same object that you got from the form. Try to create new objects and add in the arraylist and try to use generics.
EDIT:
Actually you are adding strings in your
Collection
and you are trying to invokegetTName()
by${reg.tname}
Either add whole bean to your collection or just replace JSTL with
${reg}