Struts-struts1 关于动态ActionForm ClassNotFoundException ?

发布于 2016-10-11 21:06:50 字数 1032 浏览 1125 评论 3

各位大佬好,近期在学习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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

浮生未歇 2017-06-27 21:36:31

action path="/login"这里最好加上详细的路径

偏爱自由 2016-11-18 02:19:54

在 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 对象。

你看看你哪里不对了。

晚风撩人 2016-11-07 12:38:23

幽幽花巫已经说的很全面了
你在<action path="/login" name="UserForm" type="com.wi.struts.UserAction" name="UserForm" scope="session">

添加个name属性

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文