Brand.java
这是一个javabean,里面有四个字段
@Entity
@Table(name="t_brand")
public class Brand {
private int id; //品牌id
private String name; //品牌名
private Date buildDate; //添加品牌名时间
private Manage manage; //添加品牌名的管理员
@Id
@GeneratedValue
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Column(length=32)
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getBuildDate() {
return buildDate;
}
public void setBuildDate(Date buildDate) {
this.buildDate = buildDate;
}
@ManyToOne
public Manage getManage() {
return manage;
}
public void setManage(Manage manage) {
this.manage = manage;
}
}
BrandController.java //控制器
@RequestMapping("/queryBrandIdName")
public String queryBrandIdName(Model model){
List<Brand> brands = brandDAOIMPL.queryBrandIdAndName(); //只查询id和name的方法
model.addAttribute("brands",brands);
return "addCommodity";
}
addCommodity.jsp //前台jsp页面
请选择品牌:${brands}
<c:forEach items="${brands}" var="b">
${b.name}
</c:forEach>
当做完以上的步骤之后,转到jsp页面,服务器就会报错。
java.lang.NumberFormatException: For input string: "name"
java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
java.lang.Integer.parseInt(Integer.java:449)
java.lang.Integer.parseInt(Integer.java:499)
javax.el.ArrayELResolver.coerce(ArrayELResolver.java:161)
javax.el.ArrayELResolver.getValue(ArrayELResolver.java:45)
javax.el.CompositeELResolver.getValue(CompositeELResolver.java:54)
org.apache.el.parser.AstValue.getValue(AstValue.java:123)
org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)....
原因就是,调用的方法里头只查询了两个字段,我找到的解决办法就是全都查询出来。
BrandController.java //控制器
@RequestMapping("/queryBrandIdName")
public String queryBrandIdName(Model model){
List<Brand> brands = brandDAOIMPL.queryAllBrand();//查询出来所有的字段
model.addAttribute("brands",brands);
return "addCommodity";
}
这样问题就解决了!!!!!!!!
其实,我这里也有一个疑惑,如果这个vo里,有对品牌的描述,几百上千个字的描述,每次都要从数据库中取一次,好像有些恐怖,不知道你们还有没有别的解决办法啊,只查询出这两个字段也能解决的方法