Struts2+jquery.validate框架实现影片编码是否存在

本文介绍了一种使用jQuery和Struts2进行远程验证的方法,确保影片编码在注册前未被占用。通过两种方式实现:一是利用HttpServletResponse直接写入true或false;二是采用Struts2的stream结果类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在项目中的注册页面需要判断影片编码是否存在,采用了jquery的验证框架的remote方法来实现。

1、js脚本:

$(document).ready(function(){
$("#myForm").validate({
rules:{
"mediaInfo.mediacode":{
required:true,
remote:"media!validateMediacode.action" //验证影片编码是否存在的Action
}
},
messages: {
"mediaInfo.mediacode":{
required:"请输入影片编码",
remote:"该影片编码已被注册" //当后台返回false时,不许注册
}
}
});
}) ;

2、java代码:
由于jquery的remote方法只允许返回true或者false,当返回false时,输出messages的内容:"该影片编码已经注册"。在Struts2的有两种方法可以实现:
(1)、利用HttpServletResponse对象的response实例,Java代码如下:

public String validateMediacode() throws Exception{
HttpServletRequest sRequst= ServletActionContext.getRequest();
sRequst.setCharacterEncoding("UTF-8");
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType("text/plain;charset=UTF-8");
String meidacode = sRequst.getParameter("mediaInfo.mediacode");

if(null != meidacode && "wangwang".equals(meidacode)){
//影片编码已经存在,不许注册
response.getWriter().write("false");
} else {
//允许注册
response.getWriter().write("true");
}
return null;
}

struts.xml配置:可以不用配置<result>输出项。本方法的缺点是依赖于HttpServletResponse。
(2)、使用Struts2的stream返回类型:
Boolean canSign = true; 
// 数据库中是否存在该用户名
if (null != meidacode && "wangwang".equals(meidacode)) {
canSign = false;// 表示存在,要返回false
}
inputStream = new ByteArrayInputStream(canSign.toString().getBytes()); //将true或者false转化为流,要为inputStream提供getter方法。
return null;

[quote]
由于remote规则只允许后台返回true或false,因此struts2的action得不同于一般的action,不能返回一个字符串,然后dispatch一个视图之类的。研究之后,发现struts2中有一种result类型:stream,通过该类型可以实现返回true或false。action代码如下
[/quote]
struts.xml配置:

<package name="media" extends="struts-default">
<action name="media" class="mediaAction">
<result type="stream">
<param name="contentType">text/plain</param><!-- 默认为text/plain -->
<param name="inputName">inputStream</param><!-- 默认就为inputStream -->
</result>
</action>
</package>

以上的contentType不能使用text/html类型,也可以不用配置该项,默认就是text/plain类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值