struts2内置校验器、ajax、json


1.首先路径,校验器文件需要在相对路径下,在当前校验类的同路径下,比如,Useraction.java在xdd.action包下,那么校验器文件也应该在这个包下。

2.Action中某个方法的校验命名格式:

ActionClassName-ActionAliasName-validation.xml     注意:这里的ActionAliasName(action别名)指的是struts.xmlAction 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"也会出现错误(警告,部署项目都不让通过),具体的错误还跟版本有一定关系,这里我只遇到了这些错误,不同的错误还要根据实际解决。


 



 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值