日期:2014-05-20  浏览次数:20737 次

struts2 动态方法调用
我的表单里有两个按钮,add和modify,add这个按钮就提交到默认的execute()的方法,modify按钮提交到modify()方法,问题就是点了modify按钮后没提交到modify()方法,而提交到了execute()方法,请问问题出在哪里了呢?谢谢! 
//===========jsp======================= 
function modify(){ 
targetForm=document.form[0];//取得第一个表单元素 
targetForm.action="addModifyDelivery!modify";//动态修改表单的action属性 

....... 
<s:form action="addModifyDelivery"> 
......... 
<input type="submit" onClick="modify();" value="MODIFY" class="high"/>

============================================== 
public String execute() {
InsertBiz ib = new InsertBizImpl();
try {
ib.addDelivery(name, name_c, Terms_Notes);
System.out.println("添加交货价名成功");
ActionContext.getContext().getSession().put("name", getName_c());
setTip("恭喜您:" + getName_c() + "添加交货价名成功");
return SUCCESS;
} catch (Exception e) {
// TODO Auto-generated catch block
setTip("对不起:" + getName_c() + "添加交货价名失败");
e.printStackTrace();
return FAIL;
}

}

public String modify() {
  InsertBiz ib = new InsertBizImpl();
try {
ib.modifyDelivery(text_e, text_c, Term_Note, select);
System.out.println("修改交货价名成功");
ActionContext.getContext().getSession().put("text", getText_c());
setTip("恭喜您:" + getText_c() + "修改交货价名成功");
return SUCCESS;
} catch (Exception e) {
// TODO Auto-generated catch block
setTip("对不起:" + getText_c() + "修改交货价名失败");
e.printStackTrace();
return FAIL;
}

  }
=========struts.xml================================================================== 
 <action name="addModifyDelivery" class="com.hx.qpxnet.entity.AddModifyDelivery">
  <result>/Infometions.jsp</result>  
  <result name="fail">/Infometions.jsp</result>
  </action>

现在,不论点哪个按钮都转向是execute方法,帮我把代码中的错指出,感谢!

------解决方案--------------------
struts2 action的默认执行execute()方法,要想使用其他方法可以在struts.xml中
<action name="addModifyDelivery" class="com.hx.qpxnet.entity.AddModifyDelivery"> 
<result>/Infometions.jsp </result>
<result name="fail">/Infometions.jsp </result> 
</action> 
加一个method属性,如:
<action name="addModifyDelivery" class="com.hx.qpxnet.entity.AddModifyDelivery" method="modify"> 
<result>/Infometions.jsp </result>
<result name="fail">/Infometions.jsp </result> 
</action>
------解决方案--------------------
因为struts2.0执行默认的excute方法
你的在action里面 用method属性 来指定 你要代替execute的方法的名字
------解决方案--------------------
ding
------解决方案--------------------
帮顶
------解决方案--------------------
点击modify的时候改变下<s:form action="addModifyDelivery"> action =action="addModifyDelivery!modify.action"
------解决方案--------------------
用DispatchAction
------解决方案--------------------
struts.properties