您的位置:程序门 -> java -> web 开发



怎样使用标签和strust区别在一个form中的2个按钮的行为


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


怎样使用标签和strust区别在一个form中的2个按钮的行为[已结贴,结贴人:hanpeng111]
发表于:2007-09-22 21:11:21 楼主
前台代码:
<html:form   action= "/testaction.do "   method= "post ">
.........
      <html:submit   property= "action "   value= "增加 ">
                        <bean:message   key= "button.add "/> </html:submit>
                        <div   align= "center "> </div> </td>
                    <td   height= "25 "> <div   align= "center ">
                        <html:submit   property= "action "   value= "修改 ">
                        <bean:message   key= "button.updata "/> </html:submit>
                    </div> </td>

testaction的代码:

package   ems.struts;

import   java.util.hashmap;
import   java.util.map;
import   javax.servlet.http.httpservletrequest;
import   javax.servlet.http.httpservletresponse;
import   org.apache.struts.action.actionform;
import   org.apache.struts.action.actionforward;
import   org.apache.struts.action.actionmapping;
import   org.apache.struts.actions.lookupdispatchaction;

public   class   testaction   extends   lookupdispatchaction   {
        protected   map   getkeymethodmap()
        {
                hashmap   map=new   hashmap();
                map.put( "button.add ", "add ");//button.delete,按钮的   message   key
                  map.put( "button.update ",   "update ");
                return   map;

      }
          public   actionforward   add(actionmapping   mapping,
                                                                  actionform   form,
                                                                  httpservletrequest   request,
                                                                  httpservletresponse   response)
          {
                system.out.println( "add ");
                return   null;
        }
        public   actionforward   update(actionmapping   mapping,
                                                                    actionform   form,
                                                                      httpservletrequest   request,
                                                                    httpservletresponse   response)
        {
                  system.out.println( "updata ");
                return   null;
        }


        }
配置文件   :::的代码:
<action     parameter= "action "   path= "/testaction "   type= "ems.struts.testaction ">
            <forward   name= "plan_eng_reg "   path= "/basic_data/plan_eng_reg.jsp "   />

在资源文件applicationresources.properties中
button.add=add
button.updata=updata

在运行时出现如下错误!

javax.servlet.jsp.jspexception:   cannot   retrieve   definition   for   form   bean   null   on   action   /testaction.do
at   org.apache.struts.taglib.html.formtag.lookup(formtag.java:731)
at   org.apache.struts.taglib.html.formtag.dostarttag(formtag.java:419)
at   jsp_servlet._basic_data.__plan_eng_reg._jspservice(__plan_eng_reg.java:305)
at   weblogic.servlet.jsp.jspbase.service(jspbase.java:33)
at   weblogic.servlet.internal.servletstubimpl$servletinvocationaction.run(servletstubimpl.java:1072)
at   weblogic.servlet.internal.servletstubimpl.invokeservlet(servletstubimpl.java:465)
at   weblogic.servlet.internal.servletstubimpl.invokeservlet(servletstubimpl.java:348)
at   weblogic.servlet.internal.webappservletcontext$servletinvocationaction.run(webappservletcontext.java:6981)
at   weblogic.security.acl.internal.authenticatedsubject.doas(authenticatedsubject.java:321)
at   weblogic.security.service.securitymanager.runas(securitymanager.java:121)
at   weblogic.servlet.internal.webappservletcontext.invokeservlet(webappservletcontext.java:3892)
at   weblogic.servlet.internal.servletrequestimpl.EXECute(servletrequestimpl.java:2766)
at   weblogic.kernel.EXECutethread.EXECute(EXECutethread.java:224)
at   weblogic.kernel.EXECutethread.run(EXECutethread.java:183)
发表于:2007-09-23 02:30:491楼 得分:0
button.updata=updata->

button.update=update?
发表于:2007-09-23 14:00:122楼 得分:0
你在第二次提交的时候用js吧,这样修改action比较方便!
发表于:2007-09-24 08:45:093楼 得分:0
==
发表于:2007-09-24 08:49:414楼 得分:0
我的方法是在页面上放一个隐藏域,然后再在button的onclick时间中修改隐藏域的值,这样   提交之后就可以通过查看隐藏域来知道要执行什么操作~
发表于:2007-09-24 08:55:385楼 得分:0
为什么我在运行时出现如下错误啊!!!!!

javax.servlet.jsp.jspexception:   cannot   retrieve   definition   for   form   bean   null   on   action   /testaction.do
at   org.apache.struts.taglib.html.formtag.lookup(formtag.java:731)
at   org.apache.struts.taglib.html.formtag.dostarttag(formtag.java:419)
at   jsp_servlet._basic_data.__plan_eng_reg._jspservice(__plan_eng_reg.java:305)
at   weblogic.servlet.jsp.jspbase.service(jspbase.java:33)
at   weblogic.servlet.internal.servletstubimpl$servletinvocationaction.run(servletstubimpl.java:1072)
at   weblogic.servlet.internal.servletstubimpl.invokeservlet(servletstubimpl.java:465)
at   weblogic.servlet.internal.servletstubimpl.invokeservlet(servletstubimpl.java:348)
at   weblogic.servlet.internal.webappservletcontext$servletinvocationaction.run(webappservletcontext.java:6981)
at   weblogic.security.acl.internal.authenticatedsubject.doas(authenticatedsubject.java:321)
at   weblogic.security.service.securitymanager.runas(securitymanager.java:121)
at   weblogic.servlet.internal.webappservletcontext.invokeservlet(webappservletcontext.java:3892)
at   weblogic.servlet.internal.servletrequestimpl.EXECute(servletrequestimpl.java:2766)
at   weblogic.kernel.EXECutethread.EXECute(EXECutethread.java:224)
at   weblogic.kernel.EXECutethread.run(EXECutethread.java:183)

发表于:2007-09-24 09:24:506楼 得分:20
在你的form中查看一下是否有action这个变量
发表于:2007-09-24 10:00:007楼 得分:10
form   有没有定义testaction使用的form?
发表于:2007-09-24 10:11:248楼 得分:50
在struts-config.xml配置文件中为action定义一个formbean啊,如
<form-bean   name= "testform "   type= "xxx ">
<form-property   name= " "   type= " "/>
</form-bean>

<action  
name= "testform "
path= "/testaction "
type= "ems.struts.testaction "
parameter= "action ">
<forward   name= "plan_eng_reg "   path= "/basic_data/plan_eng_reg.jsp "   />
</action>
发表于:2007-09-24 10:15:149楼 得分:0
最好的办法是用js提交,submit之前修改action
发表于:2007-09-24 10:21:3910楼 得分:0
docment.forms[0].action   =   "add.do ";
docment.forms[0].submit();
发表于:2007-09-24 10:28:1311楼 得分:0
你提交的信息是要和你定义的form   bean里面的属性对应的,我看你的配置文件里没写出formbean的定义呢
发表于:2007-09-24 14:44:4112楼 得分:0
我已经定义 <form-bean   name= "testactionform "   type= "ems.struts.testactionform "   /> 了

还是报错
javax.servlet.jsp.jspexception:   cannot   retrieve   definition   for   form   bean   null   on   action   /testaction.do
at   org.apache.struts.taglib.html.formtag.lookup(formtag.java:731)
at   org.apache.struts.taglib.html.formtag.dostarttag(formtag.java:419)
at   jsp_servlet._basic_data.__plan_eng_reg._jspservice(__plan_eng_reg.java:305)
at   weblogic.servlet.jsp.jspbase.service(jspbase.java:33)
at   weblogic.servlet.internal.servletstubimpl$servletinvocationaction.run(servletstubimpl.java:1072)
at   weblogic.servlet.internal.servletstubimpl.invokeservlet(servletstubimpl.java:465)
at   weblogic.servlet.internal.servletstubimpl.invokeservlet(servletstubimpl.java:348)
at   weblogic.servlet.internal.webappservletcontext$servletinvocationaction.run(webappservletcontext.java:6981)
at   weblogic.security.acl.internal.authenticatedsubject.doas(authenticatedsubject.java:321)
at   weblogic.security.service.securitymanager.runas(securitymanager.java:121)
at   weblogic.servlet.internal.webappservletcontext.invokeservlet(webappservletcontext.java:3892)
at   weblogic.servlet.internal.servletrequestimpl.EXECute(servletrequestimpl.java:2766)
at   weblogic.kernel.EXECutethread.EXECute(EXECutethread.java:224)
at   weblogic.kernel.EXECutethread.run(EXECutethread.java:183)
发表于:2007-09-24 15:00:0213楼 得分:0
你formbean、action怎么配置的都贴出来
发表于:2007-09-24 15:16:1814楼 得分:0
function   doedit(){
myform.action   =   "****.do?action=edit ";
myform.submit();
}
function   doadd(){
myform.action   =   "****.do?action=add ";
myform.submit();
}
<html:form   action= "****.do ">
<html:button   property= "button "   onclick= "doedit() ">
修改
</html:button>
<html:button   property= "button "   onclick= "doadd() ">
增加 </html:button>
</html:form>
注意js中form名称与你的****.do对应的actionform一致
发表于:2007-09-24 15:24:4115楼 得分:20
配置文件   :::的代码:
<action     parameter= "action "   path= "/testaction "   type= "ems.struts.testaction ">
            <forward   name= "plan_eng_reg "   path= "/basic_data/plan_eng_reg.jsp "   />
改为:
<action     parameter= "action "   path= "/testaction "   name= "testactionform "   type= "ems.struts.testaction ">
            <forward   name= "plan_eng_reg "   path= "/basic_data/plan_eng_reg.jsp "   />


快速检索

最新资讯
热门点击