用SSH做一个网站,想对一些Action做一些validation.
在structs.xml里如下:<action name="DataTabInsertKPIData" class="DataManagerBean"
method="InsertKPIData">
<result name="success">/jsp/dataManage.jsp</result>
<result name="input">/jsp/dataManage.jsp</result>
</action>jsp里面:<s:fielderror></s:fielderror>
<s:form action="DataTabInsertKPIData.action?id=%{KPIdata.kpiId}" id="dataManage_frm" name="dataManage" method="get">java里面: public void validateInsertKPIData() {
if(XValueInsert.trim().equals("")) {
addFieldError("XValue","Please input a value for X!");
}

if(YValueInsert.trim().equals("")) {
addFieldError("YValue","Please input a value for Y!");
}
}
目前的问题是,提交的时候,validateInsertKPIData这个函数会被调用,也会用红字显示输入的错误,但是validation failed之后,这个javabean class所有的其他action都不会被调用了,会有这个异常抛出:No result defined for action com.sonyericsson.cftools.kpims.web.DataManageAction and result input
at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:364)不知道是怎么回事,请高手帮忙看看,我也是才做SSH不久。

解决方案 »

  1.   

    你的数据是从哪里提交的
    不是从input输入框里提交的么?
      

  2.   

    是input框里提交的,input框映射到javabean class的成员变量里。 <td>
               <Input id="itemname" name="XValueInsert" value="0" type="text" class="" size="25"/>
            </td> 
            <td>
               <Input id="itemvalue" name="YValueInsert" value="0" type="text" class="" size="25">
            </td>   private String XValueInsert;
    private String YValueInsert;
      

  3.   

    不会调用  说明还没进到ACTION中,所以其他地方有错(或者说请求的时候ACTION写错了)
      

  4.   


    什么意思,如果对Action不加validation的话 一切Action都是正常的,都可以调用。但是假如这个validation之后 ,一旦validation失败,貌似很多Action都会出现那个异常。
      

  5.   

    com.sonyericsson.cftools.kpims.web.DataManageAction 这个ACTION中有问题。好好检查吧。如果想知道具体原因 把这个ACTION 贴出来
      

  6.   


    贴javabean class的代码么?还是struts配置文件,或者是这个页面的jsp代码?
      

  7.   

    hello?
    有人可以帮忙看一下么?
      

  8.   

      if("".equals(XValueInsert.trim())) {
                addFieldError("XValue","Please input a value for X!");
            }
            
            if("".equals(YValueInsert.trim())) {
                addFieldError("YValue","Please input a value for Y!");
            }
      

  9.   


    这个改了好像不管用啊,不是字符串比较的问题吧。一旦出现Validation failed,这个Java Bean Class的所有Action都不能被Jsp Invoke了。
      

  10.   

    问题已经解决。 解决方法是:
    In the javabean class, implement “Preparable”(com.opensymphony.xwork2.Preparable) interface, and implement prepare method with following codes:
    public void prepare() {
                                clearErrorsAndMessages();
            };
    这样,会把validation的结果解除,下一个Action就可以进入了,否则下一个Action也会遇到Input作为结果,由于没有定义Input的跳转页面,故而出现 上面的找不到Action的异常。