Jsp代码
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<%@ taglib uri="/webwork" prefix="ww" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head>
<script language="javascript">
function modify()
{
userDetailForm.action="UserModifyAction!search.action";
userDetailForm.submit();
}function del()
{
userDetailForm.action="UserDelete.action";
userDetailForm.submit();
}
</script>
<body>
<form name="userDetailForm" method="post" action="">
<input type="hidden" name="userInfo.id" value="<ww:property value="userInfo.id"/>"/>
<input type="hidden" name="userInfo.name" value="<ww:property value="userInfo.name"/>"/>
<input type="hidden" name="userInfo.password" value="<ww:property value="userInfo.password"/>"/>
<input type="hidden" name="userInfo.email" value="<ww:property value="userInfo.email"/>"/>
<input type="hidden" name="userInfo.sex" value="<ww:property value="userInfo.sex"/>"/>
<input type="hidden" name="userInfo.age" value="<ww:property value="userInfo.age"/>"/>
<table width="100%"  border="0" cellspacing="0" cellpadding="0">
  <tr align="center">
    <td colspan="2">用户详情</td>
  </tr>
  <tr>
    <td>姓名</td>
    <td><ww:property value="userInfo.name" /></td>
  </tr>
  <tr>
    <td>性别</td>
    <!--<td><ww:property id="userInfo.sex"/></td>-->
    <td><ww:if test="userInfo.sex==0">男</ww:if>
        <ww:else>女</ww:else></td>
  </tr>
  <tr>
    <td>年龄</td>
    <td><ww:property value="userInfo.age"/></td>
  </tr>
  <tr>
    <td>email</td>
    <td><ww:property value="userInfo.email"/></td>
  </tr>
  <tr>
    <td align="right"><input type="submit" value="修改" onClick="modify()"></td>
    <td><input type="submit" value="删除" onClick="del()"></td>
  </tr>
</table>
</form>
</body>
</html>
后台Action:
package com.inspur.report.web.action;import java.util.List;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import com.inspur.report.bean.UserInfo;
import com.inspur.report.business.IUserService;
import com.opensymphony.webwork.interceptor.ServletRequestAware;
import com.opensymphony.webwork.interceptor.ServletResponseAware;
import com.opensymphony.xwork.Action;
import com.opensymphony.xwork.ActionSupport;
import com.opensymphony.xwork.ModelDriven;/**
 * @author $author
 */
public class UserModifyAction extends ActionSupport implements Action,
ModelDriven{
private UserInfo userInfo = new UserInfo(); private IUserService userService; /**
 * @see com.opensymphony.xwork.Action#execute()
 */
public String search(UserInfo inputUserInfo) {
Integer userId = inputUserInfo.getId();
if (userId == null) {
return Action.ERROR;
}
List userList = userService.getAllUser();
UserInfo retuser = null;
for (int i = 0; i < userList.size(); i++) {
retuser = (UserInfo) userList.get(i);
if (retuser.getId() == userId) {
break;
}
}
return Action.SUCCESS;
} public String save(UserInfo inputUserInfo) {
if (userService.saveUser(userInfo) == 0) {
return Action.ERROR;
}
return Action.SUCCESS;
} public String execute() throws Exception {
return Action.SUCCESS; } public Object getModel() {
// TODO Auto-generated method stub
return userInfo;
} public UserInfo getUserInfo() {
return userInfo;
} public void setUserInfo(UserInfo userInfo) {
this.userInfo = userInfo;
} public IUserService getUserService() {
return userService;
} public void setUserService(IUserService userService) {
this.userService = userService;
} }
控制台的错误是
java.lang.IllegalArgumentException: Neither search() nor it's doXxx() equivalent is defined in action class com.inspur.report.web.action.UserModifyAction
但是明明search() 方法在呀

解决方案 »

  1.   

    search() 方法定义时
    好像不应该有参数
      

  2.   

    public class IllegalArgumentExceptionextends RuntimeException抛出的异常表明向方法传递了一个不合法或不正确的参数。 
      

  3.   


    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.1.1//EN" "http://www.opensymphony.com/xwork/xwork-1.1.1.dtd"><xwork>
    <include file="webwork-default.xml">include</include>
    <package name="user" extends="webwork-default">
    <action name="UserDetail" class="com.inspur.report.web.action.UserDetailAction">
    <interceptor-ref name="params" />
    <result name="success" type="dispatcher">/UserDetail.jsp</result>
    </action>
    <action name="UserDelete" class="com.inspur.report.web.action.UserDeleteAction">
    <interceptor-ref name="params" />
    <result name="success" type="chain">userList</result>
    </action>
    <action name="userAddAction" class="com.inspur.report.web.action.UserAddAction" method="save">
    <interceptor-ref name="model-driven" />
    <interceptor-ref name="validationWorkflowStack" />
    <result name="success" type="chain">userList</result>
    <result name="error" type="dispatcher">/userAdd.jsp</result>
    <result name="input" type="dispatcher">/userAdd.jsp</result>
    </action>
    <action name="userList" class="com.inspur.report.web.action.UserListAction">
    <result name="success" type="dispatcher">/userlist.jsp</result>
    </action>
    <action name="UserLoginAction" class="com.inspur.report.web.action.UserLoginAction">
    <result name="success" type="dispatcher">/welcome.jsp</result>
    <result name="error" type="dispatcher">/login.jsp</result>
    <result name="none" type="dispatcher">/login.jsp</result>
    <interceptor-ref name="modelDrivenStack" />
    </action>
    <action name="UserModifyAction" class="com.inspur.report.web.action.UserModifyAction">
    <interceptor-ref name="modelDrivenStack" />
    <result name="modify">userModify.jsp</result>
    <result name="success" type="dispatcher">UserDetail.jsp</result> </action>
    </package>
    </xwork>
      

  4.   

    String search(UserInfo inputUserInfo)
    参数??
      

  5.   

    userId你直接从userDetailForm.action="UserModifyAction!search.action?userId="+__ 传递过去就行。search方法加参数做什么?
      

  6.   

    public String search(UserInfo inputUserInfo){}
    改为:
    public String search(){}我一般这样
    userDetailForm.action="UserModifyAction!search";
      

  7.   

    这个只是实例,需要修改的,直接用肯定不行……
    在页面用个hidden,值为userInfo.userId
    在modify方法中,用js取得userId
    然后再传值到后台
      

  8.   

    顶你,获得用户信息传个用户ID就行了。干嘛把个整个对象都传过去、
    思路ls已经写得很明确的。PS:月饼拿来。
      

  9.   

    while(true)
    {
        new MoonCake("豆沙");
    }