Jquery+Json+struts交互demo,以及为什么要配置includeProperties,root
2014-04-27 23:07
351 查看
上周四面试问到了json,坦白说,我只是见过这种用法,甚至我知道json也仅仅 j s o n这四个字母,[b]隐隐朦朦记得好像是一种类似多个数组拼装的数据格式。[/b]
看了几个json的demo。
首先 1 struts.xml的配置
<package name="system" namespace="/system" extends="json-default">
<result name="findJctUnit" type="json">
<param name="includeProperties">\[\d+\]\.ddlCode,\[\d+\]\.ddlName</param>
</result>
<result name="checkUser" type="json">
<!-- 将对象中的某个属性message的值放置到栈顶 -->
<param name="root">message</param>
<!-- 标识对象中只有message的属性被json话,此时页面调用的时候,data.message -->
<param name="includeProperties">message</param>
</result>
2 Action层 注意(ElecSystemDDL对象含有ddlCode,ddlName等多個属性,为了节约资源,前台只需要ddlCode,ddlName,所以就设置includeProperties的parm)
public String findJctUnit(){
String jctID=elecUser.getJctID();
List<ElecSystemDDL> list=iElecSystemDDLService.findSystemDDLListByKeyword(jctID);
ValueStackUtils.setValueStatck(list);
return "findJctUnit";
}
public String checkUser(){
String LogonName=elecUser.getLogonName();
String message=iElecUserService.findUserByLogonName(LogonName);
return "checkUser";
}
3 前台JQuery function 业务场景(一个option下拉选择A城市,,另一个option下拉出来A城市对应的子细节)
function findJctUnit(o){
//货物所属单位的文本内容
var jct = $(o).find("option:selected").text();
$.post("elecUserAction_findJctUnit.do",{"jctID":jct},function(data,textStatus){
//先删除单位名称的下拉菜单,但是请选择要留下
// alert(data);
$("#jctUnitID option").remove();
if(data!=null && data.length>0){
for(var i=0;i<data.length;i++){
var ddlCode = data[i].ddlCode;
var ddlName = data[i].ddlName;
//添加到单位名称的下拉菜单中
var $option = $("<option></option>");
$option.attr("value",ddlCode);
$option.text(ddlName);
$("#jctUnitID").append($option);
}
}
});
}
/**校验登录名是否出现重复*/
function checkUser(o){
//alert(o.value);//dom的写法
//alert($(o).val());//jquery的写法
var logonName = $(o).val();
//以登录名作为查询条件,查询该登录名是否在数据库表中存在记录
//?????????为什么不直接用userName
$.post("elecUserAction_checkUser.do",{"logonName":logonName},function(data){
if(data==1){
$("#check").html("<font color='red'>登录名不能为空</font>");
$(o)[0].focus();
$("#BT_Submit").attr("disabled","none");
}
else if(data==2){
$("#check").html("<font color='red'>登录名已经存在</font>");
$(o)[0].focus();
$("#BT_Submit").attr("disabled","none");
}
else{
$("#check").html("<font color='green'>登录名可以使用</font>");
$("#BT_Submit").attr("disabled","");
}
});
}
百度找了下也没找到struts.xml配置includeProperties的緣由。下面是JSONResult的源码,可以看到了List<Pattern> includeProperties;这大概就类似一种正泽表达式过滤。并且在JSONUtil.serialize的方法有 includeProperties等参数。
public class JSONResult implements Result {
private static final long serialVersionUID = 8624350183189931165L;
private static final Logger LOG = LoggerFactory.getLogger(JSONResult.class);
private String defaultEncoding = "ISO-8859-1";
private List<Pattern> includeProperties;
private List<Pattern> excludeProperties
protected String createJSONString(HttpServletRequest request, Object rootObject) throws JSONException {
String json = JSONUtil.serialize(rootObject, excludeProperties, includeProperties, ignoreHierarchy, enumAsBean, excludeNullProperties);
json = addCallbackIfApplicable(request, json);
return json;
}
-----
}
看了几个json的demo。
首先 1 struts.xml的配置
<package name="system" namespace="/system" extends="json-default">
<result name="findJctUnit" type="json">
<param name="includeProperties">\[\d+\]\.ddlCode,\[\d+\]\.ddlName</param>
</result>
<result name="checkUser" type="json">
<!-- 将对象中的某个属性message的值放置到栈顶 -->
<param name="root">message</param>
<!-- 标识对象中只有message的属性被json话,此时页面调用的时候,data.message -->
<param name="includeProperties">message</param>
</result>
2 Action层 注意(ElecSystemDDL对象含有ddlCode,ddlName等多個属性,为了节约资源,前台只需要ddlCode,ddlName,所以就设置includeProperties的parm)
public String findJctUnit(){
String jctID=elecUser.getJctID();
List<ElecSystemDDL> list=iElecSystemDDLService.findSystemDDLListByKeyword(jctID);
ValueStackUtils.setValueStatck(list);
return "findJctUnit";
}
public String checkUser(){
String LogonName=elecUser.getLogonName();
String message=iElecUserService.findUserByLogonName(LogonName);
return "checkUser";
}
3 前台JQuery function 业务场景(一个option下拉选择A城市,,另一个option下拉出来A城市对应的子细节)
function findJctUnit(o){
//货物所属单位的文本内容
var jct = $(o).find("option:selected").text();
$.post("elecUserAction_findJctUnit.do",{"jctID":jct},function(data,textStatus){
//先删除单位名称的下拉菜单,但是请选择要留下
// alert(data);
$("#jctUnitID option").remove();
if(data!=null && data.length>0){
for(var i=0;i<data.length;i++){
var ddlCode = data[i].ddlCode;
var ddlName = data[i].ddlName;
//添加到单位名称的下拉菜单中
var $option = $("<option></option>");
$option.attr("value",ddlCode);
$option.text(ddlName);
$("#jctUnitID").append($option);
}
}
});
}
/**校验登录名是否出现重复*/
function checkUser(o){
//alert(o.value);//dom的写法
//alert($(o).val());//jquery的写法
var logonName = $(o).val();
//以登录名作为查询条件,查询该登录名是否在数据库表中存在记录
//?????????为什么不直接用userName
$.post("elecUserAction_checkUser.do",{"logonName":logonName},function(data){
if(data==1){
$("#check").html("<font color='red'>登录名不能为空</font>");
$(o)[0].focus();
$("#BT_Submit").attr("disabled","none");
}
else if(data==2){
$("#check").html("<font color='red'>登录名已经存在</font>");
$(o)[0].focus();
$("#BT_Submit").attr("disabled","none");
}
else{
$("#check").html("<font color='green'>登录名可以使用</font>");
$("#BT_Submit").attr("disabled","");
}
});
}
百度找了下也没找到struts.xml配置includeProperties的緣由。下面是JSONResult的源码,可以看到了List<Pattern> includeProperties;这大概就类似一种正泽表达式过滤。并且在JSONUtil.serialize的方法有 includeProperties等参数。
public class JSONResult implements Result {
private static final long serialVersionUID = 8624350183189931165L;
private static final Logger LOG = LoggerFactory.getLogger(JSONResult.class);
private String defaultEncoding = "ISO-8859-1";
private List<Pattern> includeProperties;
private List<Pattern> excludeProperties
protected String createJSONString(HttpServletRequest request, Object rootObject) throws JSONException {
String json = JSONUtil.serialize(rootObject, excludeProperties, includeProperties, ignoreHierarchy, enumAsBean, excludeNullProperties);
json = addCallbackIfApplicable(request, json);
return json;
}
-----
}
相关文章推荐
- jquery与后台进行数据交互--前台发单一数据对象,后台返回一个json字符串 serlet配置页面
- struts+jquery+json配置详解
- struts2 配置json格式数据( includeProperties中对list集合的正则配置)
- struts.properties作用及配置Demo
- Struts学习_Jquery发送ajax请求以及datatype参数为text/JSON方式
- jQuery_review之使用$.getScript()以及$.getJSON来与服务端进行异步信息交互
- struts2 配置json格式数据( includeProperties中对list集合的正则配置)
- struts2 json result param name 是 root 和includeProperties 时的微小区别
- Struts 2 +JQuery +json 实现异步交互
- struts2 配置JSON(includeProperties)
- 毕业设计---json,Struts,ajax以及JQuery简单案例
- struts.properties作用及配置Demo
- struts2 jsonplugin includeProperties 对list集合的正则配置
- struts2配置JSON(includeProperties)
- struts2 jsonplugin includeProperties 对list集合的正则配置
- 最最基层的ajax交互代码jquery+java之间的json跨域传递以及java的json代码返回
- struts2 jsonplugin includeProperties 对list集合的正则配置
- Play前后台使用JsonArray交互,以及使用JQuery遍历array数组和JsonArray
- struts2.2 引入json与jquery交互
- JavaScript、jQuery、Ajax以及json间的关系