用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不久。
在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不久。
不是从input输入框里提交的么?
<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;
什么意思,如果对Action不加validation的话 一切Action都是正常的,都可以调用。但是假如这个validation之后 ,一旦validation失败,貌似很多Action都会出现那个异常。
贴javabean class的代码么?还是struts配置文件,或者是这个页面的jsp代码?
有人可以帮忙看一下么?
addFieldError("XValue","Please input a value for X!");
}
if("".equals(YValueInsert.trim())) {
addFieldError("YValue","Please input a value for Y!");
}
这个改了好像不管用啊,不是字符串比较的问题吧。一旦出现Validation failed,这个Java Bean Class的所有Action都不能被Jsp Invoke了。
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的异常。