javax.el.PropertyNotFoundException:在类型java.lang.String上找不到属性’tname’

我之前使用过scriptlet,但现在我切换到了mvc。 我无法在JSP页面上检索值并获得错误:

javax.el.PropertyNotFoundException: Property 'tname' not found on type java.lang.String 

豆的代码:

 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(); } } 

动作控制器:

 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); } 

在JSP页面中访问

  
NameFee

我想你是直接在arraylist中添加名字和费用,但你应该在arraylist中添加整个regForm对象。

而不是下面的代码

 myBeans.add(reg.getTname()); myBeans.add(reg.getTfee()); 

你需要这样做

 myBeans.add(reg); 

此外,不要使用从表单中获得的相同对象。 尝试创建新对象并添加arraylist并尝试使用generics。

编辑:

 while (rs.next()) { String testname = rs.getString("tname"); String testfee = rs.getString("tfee"); regForm beanObject = new regForm(); beanObject.setTname(testname); beanObject.setTfee(testfee); myBeans.add(beanObject); } 

实际上,您正在Collection中添加字符串,并且您正在尝试调用

getTName() by ${reg.tname}

将整个bean添加到您的集合中或者只需用${reg}替换JSTL