struts2整合json和ajax
1,Struts2与Ajax整合的缺点
无论采用$.post还是$.ajax都捕获不到服务器产生的错误($.ajax捕获错误在servlet能做到),是struts2内部设计的不好,不是Ajax的问题。
2,$.post()与$.ajax()大家都知道,$.post()方法与$.ajax()方法的区别:
$.post()方法:不能截获异常;
$.ajax()方法:可以截获异常;
3,需要加入jar包(struts版本下的,不同版本会报错)
json-lib-2.1-jdk15.jar
struts2-json-plugin-2.3.1.2.jar
struts2-junit-plugin-2.3.1.2.jar
----------------------------------------------------自定义结果集(struts2-ajax)---------------------------------------
1,jsp页面:<script type="text/javascript">
$(function(){
coustom.inintEvent();
});
</script>
<td><s:textfield name="name"></s:textfield></td>
<td><s:label id="message"></s:label> </td>2,jsvar coustom = {
//############################自定义结果集
inintEvent:function(){
$("input[name='name']").unbind("blur");
$("input[name='name']").bind("blur", function(){
coustom.check_coustomAction($(this).val());
});
},
check_coustomAction:function(name){
var parameter={
'name':name
};
var xhl = $.post("ajaxjson_check.action", parameter, function(data){
$("#message").text(xhl.responseText);
if(xhl.responseText == "该用户名可以使用"){
$("#message").css("color", "blue");
}else{
$("#message").css("color","red");
}
});
},
//############################struts2与json整合
inintEvent2:function(){
$("input[name='name']").unbind("blur");
$("input[name='name']").bind("blur", function(){
coustom.check_coustomAction2($(this).val());
});
},
check_coustomAction2:function(name){
var parameter={
'name':name
};
$.ajax({
type:"POST",
url:"ajaxjson2_check.action",
data:parameter,
dateType:"json",
success:function(data){
$("#message").text(data.message);
},
error:function(){
$("#message").text("连接失败");//这里得不到提示,有错误会走模版页面
}
});
}
};3,action/**
*ajax调用
*/
public String check(){
Long l = coustomservice.findCoustom(this.model.getName());
if (l != 0) {
ActionContext.getContext().getValueStack().push("该用户名已占用");
}else{
ActionContext.getContext().getValueStack().push("该用户名可以使用");
}
return SUCCESS;
}4,AjaxAction.javapublic class AjaxResutl implements Result{
@Override
public void execute(ActionInvocation arg0) throws Exception {
HttpServletResponse response = ServletActionContext.getResponse();
response.setCharacterEncoding("utf-8");
String message = ActionContext.getContext().getValueStack().peek().toString();
response.getWriter().print(message);
}
}5,struts.xml<package name="ajax" namespace="/" extends="all">
<result-types>
<result-type name="ajaxResult" class="ssh.action.sturts2jsonajax.AjaxResutl"></result-type>
</result-types>
</package>
<package name="Coustom" namespace="/" extends="all">
<action name="customAction_*" class="ssh.action.sturts2jsonajax.CustomAction" method="{1}">
<result name="toAddUI">/jsp/struts2jsonajax/coustomadd.jsp</result>
</action>
</package>
<!-- result 中的type对应package中ajax的result -->
<package name="ajaxjson" namespace="/" extends="ajax">
<action name="ajaxjson_*" class="ssh.action.sturts2jsonajax.CustomAction" method="{1}">
<result type="ajaxResult"></result>
</action>
</package>-----------------------------------------------(struts2-ajax-json)-------------------------------------------------------Stringmessage加到javabeancoustom中,这个字段不需和数据库字段关联,临时的ajax获取信息。
(一般通过get,set就行了,这个系统中不行,原因,未知)
1,jsp<script type="text/javascript">
$(function(){
coustom.inintEvent2();
});
</script>2,js同上
3,action/**
*ajax调用
*/
public String check(){
try {
// int a = 1/0;
Long l = coustomservice.findCoustom(model.getName());
if (l != 0) {
model.setMessage("该用户已被占用");
// ActionContext.getContext().getValueStack().push(message);
}else{
model.setMessage("该用户可以使用");
// ActionContext.getContext().getValueStack().push(message);
}
} catch (Exception e) {
// model.setMessage("查询异常!");
model.setMessage(e.toString());
}
return SUCCESS;
}4,struts.xml<package name="Coustom2" namespace="/" extends="all">
<action name="customAction2_*" class="ssh.action.sturts2jsonajax.CustomAction2" method="{1}">
<result name="toAddUI2">/jsp/struts2jsonajax/coustomadd2.jsp</result>
</action>
</package>
<package name="coustom2_json" namespace="/" extends="json-default">
<action name="ajaxjson2_*" class="ssh.action.sturts2jsonajax.CustomAction2" method="{1}">
<result type="json"></result>
</action>
</package> 相关推荐
kentrl 2020-11-10
结束数据方法的参数,该如何定义?-- 集合为自定义实体类中的结合属性,有几个实体类,改变下标就行了。<input id="add" type="button" value="新增visitor&quo
ajaxyan 2020-11-09
zndy0 2020-11-03
学留痕 2020-09-20
learningever 2020-09-19
chongxiaocheng 2020-08-16
ajaxhe 2020-08-16
lyqdanang 2020-08-16
curiousL 2020-08-03
时光如瑾雨微凉 2020-07-19
坚持着执着 2020-07-16
jiaguoquan00 2020-07-07
李永毅 2020-07-05
坚持着执着 2020-07-05