java.lang.IllegalArgumentException: No bean specified

tjzero_sapce 2009-02-01 12:15:51
练习一个 使用实体对象作为Form属性简化开发Struts的Demo Post.jsp部分代码如下: 这里是请求端页面
<tr>
<td><strong>标题:</strong></td>
<td><input type="text" name="item.title"/></td>
</tr>
<tr>
<td><strong>房屋信息</strong></td>
<td><textarea name="item.houseInfo" rows="10" cols="40">
</textarea> </td>
</tr>

在封装数据的ActionForm中是这样写的
private HouseInfo item ;
public HouseInfo getItem() {
return item;
}
public void setItem(HouseInfo item) {
this.item = item;
}

该ActionForm中的属性 为 实体类 HouseInfo
private int streetId ;    	private int houseType ;   private int room ;
private int hall ; private String houseInfo ;
private double rent ; private String title ;
private String telephone ; private String contactName ;

在Action 中 是这样写的

HouseInfoForm house = (HouseInfoForm)form ;
HouseInfo houseInfo = new HouseInfo();
houseInfo = house.getItem();
biz.post(houseInfo);

接收端部分代码是这样的
<tr>
<td>${house.map.item.title }</td>
</tr>
<tr>
<td><strong>电话/手机: </strong>${house.map.item.telephone }</td>
</tr>
<tr>
<td><strong>联系人: </strong>${house.map.item.contactName }</td>
</tr>
<tr>
<td><strong>户型: </strong>
${house.map.item.room }室
${house.map.item.hall }厅
</td>
</tr>


报错信息是这样的
java.lang.IllegalArgumentException: No bean specified


我在Action 中做了 System.out.println("先跳过去吧"); 测试 , 发现程序并没有运行Action 中, 错误应该出现在前面 ,但是我是在找不到错误在哪了
...全文
1704 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
GkfSyser 2009-02-01
  • 打赏
  • 举报
回复
这样
private HouseInfo item = new HouseInfo(); //必须new
public HouseInfo getItem() {
return item;
}
public void setItem(HouseInfo item) {
this.item = item;
}
sebatinsky 2009-02-01
  • 打赏
  • 举报
回复
楼上说得是,你在action当中必须new这个form,你这里用的是struts1,呵呵,配置上没有问题吗?问题可以多方面来考虑,首先就是跳转到action当中.如果配置没有问题,其次就是调用其他的了,
tjzero_sapce 2009-02-01
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 GkfSyser 的回复:]
需要request.setAttribute();
直接得不到
[/Quote]

request.setAttribute() 的是设置实体类到request范围内 , 但是从ActionForm中取出的话 , 不需要放进那里的 ,他是默认在session , 所以直接用 EL表达式就可以取出的 .
GkfSyser 2009-02-01
  • 打赏
  • 举报
回复
需要request.setAttribute();
直接得不到
tjzero_sapce 2009-02-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 GkfSyser 的回复:]
这样
private HouseInfo item = new HouseInfo(); //必须new
public HouseInfo getItem() {
return item;
}
public void setItem(HouseInfo item) {
this.item = item;
}
[/Quote]

谢谢 是这里大意了, 我还有个问题 , 这样封装到ActionForm中的数据在Action中 return mapping.findForward("confirm.jsp") , confirm页面中又怎么通过 El表达式过去ActionForm中的数据呢? 我使用${ActionForm.map.item.属性名} 不行...

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧