我一切运行都正常,做了一个注册和登录的功能也都能使用,但是后来发现,我做的DispatchAction根本就没有用,因为在action中做的操作一点效果都没有。
程序根本就没有执行我的action啊!
这是为什么呢?
相关配置文件如下:
regedit.jsp关键代码<html:form action="whykadmin/admin.do" method="post">  
   用户名:<html:text property="userid"></html:text><br>
   姓名:<html:text property="username"></html:text><br>
   密码:<html:password property="password"></html:password><br>
   <input type="hidden" name="status" value="adminregister">
   <input type="hidden" name="type" value="1">
   <html:submit value="注册"></html:submit>
   <html:reset value="重填"></html:reset>
   </html:form>
Action代码:public class AdminAction extends DispatchAction {
private IAdminDAO iadmindao;

public ActionForward adminregister(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
AdminForm adminForm = (AdminForm) form;
Admin admin = new Admin();
MD5Code md5 = new MD5Code();
admin.setUserid(adminForm.getUserid());
admin.setUsername(adminForm.getUsername());
admin.setPassword(md5.getMD5ofStr(adminForm.getPassword()));
try {
this.iadmindao.register(admin);
return mapping.findForward("registersucc");
} catch (Exception e) {
e.printStackTrace();
return mapping.findForward("registerfail");

}
}
applicationContext.xml关键代码:<bean id="hibernateTemplate"
class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<bean id="iadmindao" class="net.hrmis.lsg.dao.IAdminDAO"
abstract="true">
</bean>
<bean id="iadmindaoimpl"
class="net.hrmis.lsg.dao.impl.IAdminDAOImpl" parent="iadmindao">
<property name="hibernateTemplate">
<ref bean="hibernateTemplate" />
</property>
</bean>
<bean name="/whykadmin/admin"
class="net.hrmis.lsg.struts.action.AdminAction">
<property name="iadmindao">
<ref bean="iadmindaoimpl" />
</property>
</bean>
struts-config.xml:<struts-config>
<form-beans >
     <form-bean name="adminForm" type="net.hrmis.lsg.struts.form.AdminForm" />
</form-beans> <global-exceptions />
<global-forwards />
<action-mappings >
    <action
      attribute="adminForm"
      input="/whykadmin/errors.jsp"
      name="adminForm"
      parameter="status"
      path="/whykadmin/admin"
      scope="request"
      type="net.hrmis.lsg.struts.action.AdminAction">
      <forward name="registersucc" path="/whykadmin/admin_list.jsp"></forward>
      <forward name="registerfail" path="/whykadmin/admin_register.jsp"></forward>
      <forward name="loginsucc" path="/whykadmin/AdminIndex.jsp"></forward>
      <forward name="loginfail" path="/whykadmin/index.jsp"></forward>
     </action>
</action-mappings>

<controller
processorClass="org.springframework.web.struts.DelegatingRequestProcessor">
</controller>
<message-resources
parameter="net.hrmis.lsg.struts.ApplicationResources" />
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation"
value="/WEB-INF/classes/applicationContext.xml" />
</plug-in>
</struts-config>
web.xml:<servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <init-param>
      <param-name>config</param-name>
      <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
    <init-param>
      <param-name>debug</param-name>
      <param-value>3</param-value>
    </init-param>
    <init-param>
      <param-name>detail</param-name>
      <param-value>3</param-value>
    </init-param>
    <load-on-startup>0</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
  <context-param>
   <param-name>contextConfigLocation</param-name>
   <param-value>/WEB-INF/classes/applicationContext.xml</param-value>
  </context-param>
  <servlet>
   <servlet-name>context</servlet-name>
   <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
   <load-on-startup>1</load-on-startup>
  </servlet>
问题就是Action文件根本就没执行…………

解决方案 »

  1.   

    做了一个注册和登录的功能也都能使用,因为在action中做的操作一点效果都没有。 
    这不是有点矛盾吗
      

  2.   

    <action 
    path="/role"
    type="org.springframework.web.struts.DelegatingActionProxy"
    name="CRRoleManageForm"
    scope="request"
    parameter="method"
    >
    <forward name="index" path="/CRRoleManage/CRRoleView01.jsp"></forward>
    <forward name="add_input" path="/CRRoleManage/CRRoleAdd01.jsp"></forward>
    </action>
      

  3.   

    使用DispatchAction它与struts-config.xml中的action中的parameter属性相关联的
    如:parameter="method"
    那么你在发送请求的JSP页面要加上<html:form action="whykadmin/admin.do?method=adminregister" method="post">  
    这才才能通知DispatchAction要执行那个具体的方法。
      

  4.   

    用DispatchAction的时候struts-config.xml中的action中的parameter一定要用到哦
    还有DispatchAction中的方法名一定要改哦
    我曾今也这样过啊
      

  5.   

    private IAdminDAO iadmindao;
    这个有setter方法么??没有的话加上看看
      

  6.   

    <html:form action="whykadmin/admin.do?status=adminregister" method="post">  
      

  7.   

    applicationContext.xml怎么加载了两次,在web.xml和struts-config.xml都进行了加载。
      

  8.   

    10楼方法试过了,也不行啊!
    怀疑跟导入的jar包有没有关系呢?struts的jar包!