Struts-struts1 关于动态ActionForm ClassNotFoundException ?
各位大佬好,近期在学习strut1,使用动态ActionForm,提交/login请求后,总提示找不到UserAction,报:java.lang.ClassNotFoundException,请看struts-config.xml配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">
<struts-config>
<form-beans>
<form-bean name="UserForm" type="org.apache.struts.action.DynaActionForm">
<form-property name="userName" type="java.lang.String"/>
<form-property name="passWord" type="java.lang.String"/>
</form-bean>
</form-beans>
<action-mappings>
<action path="/login" type="com.wi.struts.UserAction" name="UserForm" scope="session">
<forward name="loginIn" path="index.jsp"/>
</action>
</action-mappings>
</struts-config>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
action path="/login"这里最好加上详细的路径
在 struts 中使用动态 form,需要 有以下几步:
1) 配置动态 form
要想使用动态 form, 首先要现在 struts-config.xml 中作配置
实例代码如下:
< form-beans >
< form-bean name = "vOForm" type = "org.apache.struts.action.DynaActionForm" >
< form-property name = "uname" type = "java.lang.String" />
< form-property name = "upass" type = "java.lang.String" />
</ form-bean >
</ form-beans >
2) 页面 form
Form, 其实是一个 transfer object , 也就是说,是在 viewer 和 action 只见 的交换数据和传递数据的对象。
所以从页面的 form, 每一个属性都要和动态 form 的属性一一对应。
然后,由 struts 来完成其属性值的映射。
实例代码如下:
<form method="POST" action="login.do">
username : <input type="text" name="uname" value="zhangyi"><br>
password : <input type="password" name="upass" value="zhangyi"><br>
<input type="submit" name="submit" value="login">
</form>
这个 form 里面的属性和动态 form 里面的属性是一一对应的。
3) Action
由上面的页面 form 上,我们可以看到,如果此 form 提交,那么,请求提交到了 login.do
这个 action.
那么,在这个 action 里面,如何实现对动态 form 的调用 ? 同普通的ActionForm一样,Action类和JSP都可以访问动态ActionForm,而访问方式也基本一致。访问动态ActionForm与访问普通的ActionForm的最大区别在于对属性的访问方式不同。在标准的ActionForm中,针对每一个属性都提供了getter和setter方法来读取和设置属性,而DynaActionForm把所有的属性保存在一个Map 对象中,因此访问DyanActionForm中的属性与访问Map对象中的方法类似:
实例代码如下:
DynaActionForm vOForm = (DynaActionForm) form;
String uname= (String)vOForm .get("uname");
String upass= (String)vOForm .getString("upass");
//vOForm.set("uname", "fengyan");设置值!
System. out .println( "Result is : " + vOForm);
因为,我们传递的是 DynaActionForm, 所以,在调用的时候,我们就要把 form 强制转换成 DynaActionForm 对象。
你看看你哪里不对了。
幽幽花巫已经说的很全面了
你在<action path="/login" name="UserForm" type="com.wi.struts.UserAction" name="UserForm" scope="session">
添加个name属性