我用actionform传数据,但是却得不到值。界面是jsp的,用的是struts1和hibernate3下面是代码一、adminVO:
public class AdminVO {
private String name;
private String username;
private String password;
private String work;



所有的get,set方法
public Admin getInstance() {
return new Admin(this.getName(), this.getUsername(), this.getPassword(), 
this.getWork(), "1");
}Admin是用myeclipse和hibernate自动生成的类。
}
二、AdminInfoForm
public class AdminInfoForm extends ActionForm {
private AdminVO advo = new AdminVO(); public AdminVO getAdvo() {
return advo;
} public void setAdvo(AdminVO advo) {
this.advo = advo;
} public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
// TODO Auto-generated method stub
return super.validate(mapping, request);
} public void reset(ActionMapping mapping, HttpServletRequest request) {
// TODO Auto-generated method stub
try {
request.setCharacterEncoding("utf-8");
//用于中文字符编码!
} catch (Exception e) {
} super.reset(mapping, request);
}
}三、addAdminAction
public class AddAdminAction extends MappingDispatchAction {
public ActionForward add(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
        //添加管理员
AdminInfoForm adIF = (AdminInfoForm)form;
AdminVO ad = adIF.getAdvo();
System.out.println("do");
new AdminDAO().save(ad.getInstance());
return mapping.findForward("addSuccess");
} public ActionForward query(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
//查询管理员
List list = new AdminDAO().findByUseful("1");
request.setAttribute("Admin_List", list);
System.out.println("query");
return mapping.findForward("ok");
}
}四、jsp界面的表单部分
<form method="post" action="addAdmin.do" onsubmit="return test()"  name="adminForm">
  <p align="center">
    <b><font size="3">增加</font></b>
    <font size="3"><b>管理用户</b>
    </font>
  </p>
  <div align="center">
<table width="306" border="1" cellpadding="2" cellspacing="0"
bordercolorlight="#000000" bordercolordark="#000000">
   <tr>
<td width="76" align="center" bordercolor="#808080" height="38">
   用户名
</td>
        <td bordercolor="#808080">    <input type="text" name="advo.username" id="username"/>
</td>
   </tr>
   <tr>
<td bordercolor="#808080" height="38">
   <div align="center">
        姓名
   </div>
        </td>
<td bordercolor="#808080">    <input type="text" name="advo.name" id="truename"/>
</td>
   </tr>
   <tr>
<td bordercolor="#808080" height="38">
   <p align="center">
   单位
 </td>
<td bordercolor="#808080">
   <input type="text" name="advo.work" />
        </td>
   </tr>
   <tr>
<td bordercolor="#808080" height="38">
   <div align="center">
   初始密码
   </div>
</td>
<td bordercolor="#808080">
   <input type="text" name="advo.password" id="password"/>
</td>
   </tr>
</table>
       </div>
       <p align="center">
   <input type="submit" value="提交" name="B1">
   <input type="reset" value="重置" name="B2">
</p>
 </form>四、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>
<data-sources />
<form-beans>
<form-bean name="loginForm" type="com.form.LoginInfoForm" />
<form-bean name="adminForm" type="com.form.AdminInfoForm" /> </form-beans>
<global-exceptions />
<global-forwards />
<action-mappings>
<action path="/login" type="com.action.LoginAciton" name="loginForm"
parameter="login" attribute="theLoginer">
<!-- 登录配置 -->
<forward name="no" path="/index.jsp?flag=false" redirect="true"></forward>
<forward name="admin" path="/admin/index.jsp" redirect="true"></forward>
</action>

<!-- 管理员界面的action -->
    <action path="/adminadd" type="com.action.AddAdminAction" parameter="query">
        <!-- 进入增加管理员界面 -->
        <forward name="ok" path="/admin/adminadd.jsp" redirect="true"></forward>
    </action>
<action path="/addAdmin" type="com.action.AddAdminAction" name="adminForm"
        parameter="add" attribute="theAdmin">
        <!-- 增加管理员 -->
        <forward name="addSuccess" path="/admin/adminadd.jsp" redirect="true"></forward>
        </action>
</action-mappings>
<message-resources parameter="com.yourcompany.struts.ApplicationResources" />
</struts-config>我仔细核对了内容,觉得应该没错误,但是用tomcat部署调试之后,用ie进行操作,总提示错误。
异常链如下:2013-4-17 17:48:27 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet action threw exception
java.lang.ClassCastException: vo.Admin cannot be cast to org.apache.struts.action.ActionForm
at org.apache.struts.util.RequestUtils.lookupActionForm(RequestUtils.java:213)
at org.apache.struts.util.RequestUtils.createActionForm(RequestUtils.java:179)
at org.apache.struts.action.RequestProcessor.processActionForm(RequestProcessor.java:331)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:202)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)异常链中的vo.Admin并不是表单的vo类啊,但是一直提示这个类不符合ActionForm
我在代码中用的就是AdminVO类,但是这里却提示的是Admin类。恳请论坛里的大神帮忙分析、解答下!异常

解决方案 »

  1.   

    继承了啊!AdminInfoForm 第一句就是:
    public class AdminInfoForm extends ActionForm {
      

  2.   

    看不出哪里有错.class有木有import不正确的
      

  3.   

    已经解决了,把Struts-config.xml里
    <action path="/addAdmin" type="com.action.AddAdminAction" name="adminForm"
             parameter="add" attribute="theAdmin">
             <!-- 增加管理员 -->
             <forward name="addSuccess" path="/admin/adminadd.jsp" redirect="true"></forward>
             </action>
    中的attribute属性去掉就行了……