1.首先路径,校验器文件需要在相对路径下,在当前校验类的同路径下,比如,Useraction.java在xdd.action包下,那么校验器文件也应该在这个包下。
2.Action中某个方法的校验命名格式:
ActionClassName-ActionAliasName-validation.xml 注意:这里的ActionAliasName(action别名)指的是struts.xml中Action name="XX"的xx的名称,而不是method="XX"的名称。这里非常需要注意校验器的命名方式,还有命名的时候不是大写,远name是大写就大写,是小写就是小写,总之就是原始的名字。否则校验器就不会起作用!还有注意校验器约束文档,没记错的话在struts-core.jar下,有不同版本的约束文档,找到相应的dtd文档,复制头部分比如:
<!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""http://struts.apache.org/dtds/struts-2.3.dtd">
3.ajax需要注意(新手)ajax配置在struts.xml中,返回值为null,可以不用写result,
<!-- ajax配置 返回值为null 不用写result -->
<action name="userExit" class="com.xdd.action.UserAction" method="userNameOnly">
<result name="input">/toError.jsp</result>
</action>
public String userNameOnly(){
System.out.println("sdfjsdfksdhfjksdfh");
HttpServletRequest request=ServletActionContext.getRequest();
String name=request.getParameter("name");
System.out.println(name);
boolean result=false;
UserBiz ub=new UserBizImpl();
if(ub.userExitst(name)==false){
result=true;
}
页面:
<script type="text/javascript" src="<%=basePath %>js/jquery-1.7.2.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("#username").on("blur",function(){
var name=$(this).val();
if(name!=null && name!=""){
$.ajax({
type:"post",
url:"<%=basePath%>users/userExit",
dataType:"html",
data:{name:name},
success:function(strValue){
if(strValue=="false"){
$("#Name").html("用户名已存在!");
}else{
$("#Name").html("");
}
},
error:function(data){
},
});
}
});
});
</script>
这里都是demo,不用计较参数,实际使用的时候自行替换。
4.json最容易出现的就是ClassNotFound错误,出这个错误的原因很多,百度了一下,跟很多版本有关系,我用的是2.3.0以上的版本了,首先需要注意导包,
struts2-json-plugin-2.3.20.jar这个架包,在配置struts.xml的时候需要加上常量配置,因为这个问题非常严重,百度了一下说是json本来就是以utf-8来编码的,所以需要配置编码方式。
<constant name="struts.i18n.encoding" value="UTF-8"/>
<package name="jsonexample" extends="json-default">
<action name="JSONExample" class="com.xdd.action.JSONExample" method="execute">
<result type="json">
<param name="noCache">true</param>
<param name="contentType">text/html</param>
</result>
</action>
</package>
没有导包 extends="json-default"也会出现错误(警告,部署项目都不让通过),具体的错误还跟版本有一定关系,这里我只遇到了这些错误,不同的错误还要根据实际解决。