HttpServletRequest request=ServletActionContext.getRequest();
long[] del={Integer.parseInt(request.getParameter("box"))};这样为什么不行啊

解决方案 »

  1.   


    request.getParameterNames();
      

  2.   

    long[] del = request.getParameterValues("box");
      

  3.   


    request.getParameterNames();
      

  4.   

    ...Struts2不是这么干的。struts2会有属性注入 
      

  5.   

    struts2中把多选框中的值组成如下格式 比如1,2,3,4,5,等等
    你只要在后台取到 然后按照,切割开就得到了
      

  6.   

    public String DelAll() throws Exception {

    HttpServletRequest request=ServletActionContext.getRequest();
    String[] del= request.getParameterValues("box");
    for(int i=0;i<del.length;i++){
    int id=Integer.parseInt(del[i]);
    service.delAll(id);
    }
    return super.execute();
    }

    这是我的方法,报空指针异常
      

  7.   

    public String DelAll() throws Exception {

    HttpServletRequest request=ServletActionContext.getRequest();
    String[] del= request.getParameterValues("box");
    for(int i=0;i<del.length;i++){
    int id=Integer.parseInt(del[i]);
    service.delAll(id);
    }
    return super.execute();
    }

    这是我的方法,报空指针异常
      

  8.   

    public String DelAll() throws Exception {HttpServletRequest request=ServletActionContext.getRequest();
    String[] del= request.getParameterValues("box");
    for(int i=0;i<del.length;i++){
    int id=Integer.parseInt(del[i]);
    service.delAll(id);
    }
    return super.execute();
    }
    红色的,空指针异常
      

  9.   

    java.lang.NullPointerException
    at com.java.action.Action.DelAll(Action.java:72)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:404)
    at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:267)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:229)
    at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:221)
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
    at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
    at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
    at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
    at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:150)
    at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:48)
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
    at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
    at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
    at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
    at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:123)
    at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
    at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
    at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
    at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:184)
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
    at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
    at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
    at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
    at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:105)
    at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
    at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
    at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
    at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:83)
    at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
    at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
      

  10.   


    del数组为空!其实LZ可以在Action中定义一个集合List<checkbox值类型>,设置set,get方法在集合中就可以取到值了!
     
      

  11.   

    在action中:
    private string name[];
    name为多选框的名称;set/get方法直接遍历就行
      

  12.   

    在action中:
    private string name[];
    name为多选框的名称;set/get方法直接遍历就行
      

  13.   

    在action中:
    private string name[];
    name为多选框的名称;set/get方法直接遍历就行
      

  14.   

    <a href="<s:url action="login_com.java.action.Action_DelAll_List.action">
    <s:param name="id" value="id"></s:param>
    </s:url>" onclick="deleSelect()"> 删除</a>
    <script type="text/javascript">
    function deleSelect()
    {
        var delValue="";
        var flag=false;
        var id= document.getElementsByName("box");
        for(var i=0;i<id.length;i++)
            {
            if(id[i].checked){
                    delValue+=","+id[i].value;
                    flag =true;
            };
        }
        if(flag==false)
            {
            alert("至少你要选择一个待删除记录");
            returnfalse;
            };
    }
    </script>前台是这样写的
      

  15.   

    测试你的数组del是不是有值 个人认为是你的request获取的有点问题,s2有自己的接口implements ServletRequestAware 删除也不应该这样做  有 where in  可以 用
      

  16.   

    你前台每一个多选框中都需要写一个属性name="box"有么?
      

  17.   

       这是 多选框   
           <td><input type="checkbox" name="box" value="${id}"/></td>
            <td><s:property value="id"/></td>
            <td><s:property value="name" /></td>
    <td><s:property value="sex" /></td>
    <td><s:property value="age" /></td>
    <td><s:property value="natives" /></td>
    <td><s:property value="className" /></td>
    这是删除
            <a href="<s:url action="login_com.java.action.Action_DelAll_List.action">
    <s:param name="id" value="id"></s:param>
    </s:url>" onclick="deleSelect()"> 删除</a>  
      

  18.   

    给action加个String[] xxx;xxx跟你的checkbox的name一样。。然后再加getter setter。。
      

  19.   

    你的box的值根本就没传过去,那肯定是nullpoint的。
    <s:param name="id" value="id">?????这样写不是只传了id="id"过去了?用js或jqurey获取box的值再传过去。
      

  20.   

    <s:param name="box" value="id">改成这样了,也不行啊