表单页面
<s:form id="form" method="post" action="#ud.name.equals('')?user!add:user!upd">
<input type="hidden" id="upd" value="${ud.name}"/>
<table border="1">
<tr align="center">
<td width="50%" >用户名:</td>
<td width="50%"><input type="text" name="userdo.name" value="${ud.name}"/></td>
</tr>
<tr align="center">
<td>密码:</td>
<td><input type="text" name="userdo.pwd" value="${ud.pwd}"/></td>
</tr>
<tr align="center">
<td ><input type="submit" value="提交" onclick="fun()" /></td>
<td ><input type="reset" value="重置"/></td>
</tr>
</table>
</s:form>
UserAction方法
public String add(){
userManager.add(userdo);
return this.sel();
}
public String del(){
userManager.del(userdo.getName());
return this.sel();
}
public String upd(){
userManager.upd(userdo);
return this.sel();
}
我知道action里的写法有问题,但是它不报错,直接跳转到了sel方法,请大神们告诉我为什么会跳转到sel方法。
------解决方案--------------------
是不是其他地方调用的 的。你单步调试看看。
------解决方案--------------------
你用firebug看一下你的action是什么?你的请求到了哪个方法?估计是那的问题,不建议你那样写,很容易造成错误。还有struts每一个请求就是一个新的Action,执行完了直接返回视图层,你让你的所有action都返回统一的一个方法很是多此一举而且非常怪异的写法,你要执行通用功能就写在拦截器里,用框架就按人家的要求和格式来做,不要写那些花里胡哨的东西,没什么用还容易出错。
------解决方案--------------------
应该是执行了你的add或upd方法,然后跳到了sel()方法吧。
没有执行,我用debug看过了 如果不在sel方法前加断点 只在upd或者add方法前加断点,不会进入断点,而是直接跳转到list.jsp页面,也就是直接执行sel方法。
你用firebug看一下你的action是什么?你的请求到了哪个方法?估计是那的问题,不建议你那样写,很容易造成错误。还有struts每一个请求就是一个新的Action,执行完了直接返回视图层,你让你的所有action都返回统一的一个方法很是多此一举而且非常怪异的写法,你要执行通用功能就写在拦截器里,用框架就按人家的要求和格式来做,不要写那些花里胡哨的东西,没什么用还容易出错。
直接把form提交的aciton后面参数删了,让它们跳转到不同的action里,在struts。xml里控制跳转到哪个方法里比较清晰吧~