<form>
<input type="button" value="插入" name="insert" onclick="document.form[0].submit()"/>
<input type="button" value="删除" name="delete" onclick="document.form[0].submit()"/>
<input type="button" value="修改" name="modify" onclick="document.form[0].submit()"/>
</form>假如我有多个button,我在submit之后我要知道我是点击的哪个按钮.也就是说我提交之后我要得到相应的button的name,在action中我应该怎么得到啊?是用request对象么?有人知道么?
<input type="hidden" name="action" />
<input type="button" value="插入" name="insert" onclick="document.forms[0].action.value='insert'; document.forms[0].submit()"/>
<input type="button" value="删除" name="delete" onclick="document.forms[0].action.value='delete'; document.forms[0].submit()"/>
<input type="button" value="修改" name="modify" onclick="document.forms[0].action.value='modify'; document.forms[0].submit()"/>
</form>
<input type="button" value="插入" name="insert" onclick="alert(this.name);"/>
<input type="button" value="删除" name="delete" onclick="alert(this.name);"/>
<input type="button" value="修改" name="modify" onclick="alert(this.name);"/>
</form>
document.表单名.value;取值
Map map = ActionContext.getContext().getParameters();
map 里面包括了所有提交的表单属性
点的哪个submit 就会有那个 其他没有点的 就没有
按照你的要求来的话你用一个action就可以了,设置一个隐藏域传值进去判断。
可以这样写
<script language="javascript">
function submitForm(ac){
document.getElementById("op").value=ac;
document.form[0].submit();
}
</script><form action="xx.do">
<input type="hidden" name="op"/>
<input type="button" value="插入" name="insert" onclick="submitForm('insert')"/>
<input type="button" value="删除" name="delete" onclick="submitForm('delete')"/>
<input type="button" value="修改" name="modify" onclick="submitForm('modify')"/>
</form>
如果是继承dispatchaction写多个action
可以这样写
<script language="javascript">
function submitForm(ac){
document.form[0].action="xxx.do?op="+ac;
document.form[0].submit();
}
</script><form>
<input type="button" value="插入" name="insert" onclick="submitForm('insert')"/>
<input type="button" value="删除" name="delete" onclick="submitForm('delete')"/>
<input type="button" value="修改" name="modify" onclick="submitForm('modify')"/>
</form>
<input type="button" value="插入" name="insert" onclick="document.form[0].submit()"/>
<input type="button" value="删除" name="delete" onclick="document.form[0].submit()"/>
<input type="button" value="修改" name="modify" onclick="document.form[0].submit()"/>
</form>
假如用户点了“插入”按钮,这时:request.getParameter("insert")=="插入";
request.getParameter("delete")==null;
request.getParameter("modify")==null;
//以此类推!也就是说无论多少submit类型的按钮,都只有一个不为空。这时在Struts的Action中以用反射方法来做:
public class MyAction extends Action{//注意,这里并不需要继承DispatchAction public ActionForward execute(ActionMapping mapping, ActionForm from, HttpServletRequest request, HttpServletResponse response) throws Exception {
String func = {"insert","delete","modify"};
String methodName = null;
for(String f : func){
if(request.getParameter(f) != null){
methodName = request.getParameter(f);
break;
}
}
try {
//利用反射技术让程序自动找到要处理的方法并执行之
Method method = this.clazz.getDeclaredMethod(methodName, ActionMapping.class, ActionForm.class, HttpServletRequest.class, HttpServletResponse.class);
return (ActionForward)method.invoke(this, mapping, from, request, response);
} catch (Exception e) {
request.setAttribute("message", e.getMessage());
return mapping.findForward("message");
}
} public ActionForward insert(ActionMapping mapping, ActionForm from, HttpServletRequest request, HttpServletResponse response) throws Exception {
//todo
}
public ActionForward delete(ActionMapping mapping, ActionForm from, HttpServletRequest request, HttpServletResponse response) throws Exception {
//todo
}
public ActionForward modify(ActionMapping mapping, ActionForm from, HttpServletRequest request, HttpServletResponse response) throws Exception {
//todo
}}
2.可以使用javascript改变 action 不同的button触发不同的 function提交到 不同的 action处理