can't find bean preIndexForm in any scope

我在一个jsp页面中写了以下内容<%@tagliburi="/WEB-INF/struts-bean.tld"prefix="bean"%><bean:defineid=... 我在一个jsp页面中写了以下内容
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<bean:define id="compInfo" name="preIndexForm" property="compinfoInfo" type="com.epportal.manageside.busiinfo.CompinfoInfo"/>

我的struts-config文件是这样写的
<form-bean name="preIndexForm" type="org.apache.struts.action.DynaActionForm">
<form-property name="compinfoInfo" type="com.epportal.manageside.busiinfo.CompinfoInfo" />
</form-bean>

<action path="/preIndex" type="com.epportal.manageside.clientaction.PreIndexAction" name="preIndexForm">
</action>
我的struts 支持 dynaactionform

程序执行的时候报错 总是说Cannot find bean preIndexForm in any scope
展开
 我来答
ljydd
2008-05-13 · TA获得超过239个赞
知道小有建树答主
回答量:213
采纳率:0%
帮助的人:263万
展开全部
在动态ActionForm声明的时候,属性tpye的值是struts提供的org.apache.struts.action.DynaActionForm
struts会自动调用这个类来进行封装,所以只要在*.xml文件里配置好就可以了,不用再写一个继承ActionForm的类。

动态ActionForm的优点是:如果在页面上添加了一个request(例如:让用户输入信息的文本框)的话,直接改*.xml文件就可以了,而静态ActionForm就要再编译.java文件,重启服务器才能有效。

缺点是:不能在*.jsp文件中用EL语句了(${}),如果要在*.jsp页面上用到form的话,就要在Action类的execute()方法中进行强转:
DynaActionForm dForm = (DynaActionForm)form;

然后用DynaActionForm中的get()方法,方法中传<form-property/>标签中属性name的值来获得封装request的数据。如果页面多的话,代码量会非常的大,所以一般在实际项目中都不会用到动态ActionForm。

下面是一个例子:
作用是在struts-config.xml配置了一个动态ActionForm,然后通过Action类把form转发到页面上。

struts-config.xml的配置:
<form-bean name="dform" type="org.apache.struts.action.DynaActionForm">
<form-property name="name" type="java.lang.String"/>
</form-bean>

Action类中execute()方法:
DynaActionForm dForm = (DynaActionForm)form;
String dName = (String)dForm.get("name");
request.setAttribute("name",dName);
return mapping.findForward("view");

view.jsp:
${name}
letian688
2008-05-13 · TA获得超过220个赞
知道小有建树答主
回答量:216
采纳率:0%
帮助的人:201万
展开全部
感觉你的bean:define 的type应该指向org.apache.struts.action.DynaActionForm
这个Form里有com.epportal.manageside.busiinfo.CompinfoInfo类型的对象属性 才能找到name="preIndexForm" property="compinfoInfo"
你的动态Form的属性应该有个private CompinfoInfo compinfoInfo;还有它的get和set方法。理论上应该是这样的。我没有使用过DynaActionForm 呵呵 你可以照我说的试一下,希望解决你的问题。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式