报错信息如下:
http-8080-5 - 2012-07-20 14:10:06,390 - DEBUG - com.opensymphony.xwork2.interceptor.StaticParametersInterceptor - Setting static parameters {} - 
http-8080-5 - 2012-07-20 14:10:06,390 - DEBUG - com.opensymphony.xwork2.interceptor.ParametersInterceptor - Setting params NONE - 
http-8080-5 - 2012-07-20 14:10:06,390 - DEBUG - com.opensymphony.xwork2.interceptor.ParametersInterceptor - Setting params ids => [ on ] message => [  ] waterType.id => [ 89 ] waterType.ratio => [ 166 ] waterType.sewageprice => [ 10 ] waterType.waterprice => [ 9 ] waterType.watertype => [ 爱我中签约1 ]  - 
http-8080-5 - 2012-07-20 14:10:06,390 - DEBUG - com.opensymphony.xwork2.conversion.impl.InstantiatingNullHandler - Entering nullPropertyValue [target=[com.opensymphony.xwork2.ActionSupport@15c19d7, com.opensymphony.xwork2.DefaultTextProvider@1b51db7], property=waterType] - 
ognl.OgnlException: target is null for setProperty(null, "id", [Ljava.lang.String;@1a4770d)
at ognl.OgnlRuntime.setProperty(OgnlRuntime.java:1624)
at ognl.ASTProperty.setValueBody(ASTProperty.java:105)
at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:177)
at ognl.SimpleNode.setValue(SimpleNode.java:246)
at ognl.ASTChain.setValueBody(ASTChain.java:172)
at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:177)
at ognl.SimpleNode.setValue(SimpleNode.java:246)
at ognl.Ognl.setValue(Ognl.java:476)
at com.opensymphony.xwork2.ognl.OgnlUtil.setValue(OgnlUtil.java:192)
at com.opensymphony.xwork2.ognl.OgnlValueStack.setValue(OgnlValueStack.java:155)
at com.opensymphony.xwork2.ognl.OgnlValueStack.setValue(OgnlValueStack.java:143)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.setParameters(ParametersInterceptor.java:273)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:187)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:148)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:93)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:235)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:128)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at org.apache.struts2.interceptor.ProfilingActivationInterceptor.intercept(ProfilingActivationInterceptor.java:104)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:148)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:128)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:468)
at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:843)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:679)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1303)
at java.lang.Thread.run(Thread.java:595)

解决方案 »

  1.   

    action代码public class WaterTypeAction extends BaseAction
    {
        @Resource
        private TPublicWatertypeDAO tPublicWatertypeDAO;
        
        private TPublicWatertype waterType ;
        private List<TPublicWatertype> typeList;    @Override
        public String execute()
            throws Exception
        {
            typeList = tPublicWatertypeDAO.findByProperty("status", Byte.valueOf("1"));
            for(Iterator<TPublicWatertype> it = typeList.iterator(); it.hasNext();)
            {
                TPublicWatertype w = it.next();
                System.out.println("查询:"+w);
            }
            //message = null;
            return SUCCESS;
        }    public String add(){
            List<TPublicWatertype> tmp =  tPublicWatertypeDAO.findByProperty("watertype", waterType.getWatertype());
            if(tmp != null && tmp.size() >0){
                message = getText("basic.global.watertype.samename");
                System.out.println("有相同" + message);
            }else{
                waterType.setStatus(Byte.valueOf("1"));
                tPublicWatertypeDAO.save(waterType);
                message = getText("basic.global.watertype.addsuccess");
            }
            
            return SUCCESS;
        }
        
        public String del(){
            System.out.println(waterType);
            waterType.setStatus(Byte.valueOf("2"));
            tPublicWatertypeDAO.merge(waterType);
            message = getText("basic.global.watertype.delsuccess");
            return SUCCESS;
        }
        
        public String update(){
            System.out.println(waterType);
            waterType.setStatus(Byte.valueOf("1"));
            tPublicWatertypeDAO.merge(waterType);
            message = getText("basic.global.watertype.modifysuccess");
            return SUCCESS;
        }
        
        public TPublicWatertype getWaterType()
        {
            return waterType;
        }    public void setWaterType(TPublicWatertype waterType)
        {
            this.waterType = waterType;
        }    public List<TPublicWatertype> getTypeList()
        {
            return typeList;
        }    public void setTypeList(List<TPublicWatertype> typeList)
        {
            this.typeList = typeList;
        }    public TPublicWatertypeDAO gettPublicWatertypeDAO()
        {
            return tPublicWatertypeDAO;
        }
        
        public void settPublicWatertypeDAO(TPublicWatertypeDAO tPublicWatertypeDAO)
        {
            this.tPublicWatertypeDAO = tPublicWatertypeDAO;
        }
        
        
    }
    jsp 代码
    <form action="basic/watertype" method="post">
    <table width="100%" border="0" cellpadding="0" cellspacing="0" align="center">
    <tbody id="TableData">
    <s:iterator id="watertype" value="#request.typeList" status="status">
    <tr>
    <td>
    <input type="radio"  onClick="youcheck(this)"  name="ids" value="<s:property value='#watertype.id'/>">
    <s:property value="#status.index+1"/>
    </td>
    <td>
    <s:property value="#watertype.watertype"/>
    </td>
    <td>
    <s:property value="#watertype.waterprice"/>
    </td>
    <td>
    <s:property value="#watertype.ratio"/>
    </td>
    <td>
    <s:property value="#watertype.sewageprice"/>
    <input type="hidden" id="waterid_<s:property value='#status.index+1'/>" value="<s:property value='#watertype.id'/>"/>
    </td>
    </tr>
    </s:iterator>
    <tr>
    <td>
    <input type="hidden" id="message" name="message" value="<s:property value='#request.message'/>"/>
    <input type="hidden"  id="watertype_4" name="waterType.id"/>
    <input type="hidden"  id="watertype_0" name="waterType.watertype"/>
    <input type="hidden"  id="watertype_1" name="waterType.waterprice"/>
    <input type="hidden"  id="watertype_2" name="waterType.ratio"/>
    <input type="hidden"  id="watertype_3" name="waterType.sewageprice"/>
    </td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    </tr>
    </tbody>
    </table>
    <br/>
    </form>
      

  2.   

    发下struts.xml吧  感觉问题在那
      

  3.   

    ognl.OgnlException: target is null for setProperty(null, "id", [Ljava.lang.String;@1a4770d)这是JSP页面抛出的异常。 字符串是null 。目测是这一句。可能是没有赋值
    <input type="radio"  onClick="youcheck(this)"  name="ids" value="<s:property value='#watertype.id'/>">
    具体自己找: