在Web开发中,Struts2、Ajax和JSON的结合使用能实现异步数据交互,提高用户体验。本实例展示了如何在Struts2框架下,通过Ajax发送请求获取JSON数据,并将数据返回到JSP页面,以填充下拉列表(`<s:select/>`标签)。 1. **Struts2配置**: 在`struts.xml`配置文件中,我们需要定义一个Action,指定其结果类型为`json`。这样,当Action执行完成后,Struts2会自动将Action中的属性序列化为JSON格式并返回给客户端。配置如下: ```xml <!-- 配置Struts2支持JSON --> <constant name="struts.enable.SMD" value="true"/> <constant name="struts.action.extension" value=","/> <constant name="struts.objectFactory" value="struts-default"/> <constant name="struts.devMode" value="false"/> <constant name="struts.json.default.include" value="*"/> <constant name="struts.custom.i18n.resources" value="global_messages"/> <!-- 配置Action --> <action name="AuitQueryIssueData" class="com.example.AuditAction"> <result type="json"> <param name="root">result1</param> <param name="includeProperties">result1.*</param> </result> </action> ``` 注意,`result1`是Action类中的属性,它需要有对应的getter和setter方法,这样在返回JSON时,Struts2才会将这个属性包含进去。 2. **JSP页面**: JSP页面中使用Ajax发送POST请求到服务器,获取JSON数据。`dataType: 'json'`表示期望服务器返回JSON格式的数据。在`success`回调函数中,使用`$.each()`遍历JSON对象数组,并更新页面元素。示例代码: ```javascript $.ajax({ type: 'POST', url: "AuitQueryIssueData.action", dataType: 'json', async: true, data: { matnr: frm.matnr.value, insp_wkctcode: sendId }, success: function(data) { $("#DivDetailList").empty(); $.each(data, function(index, value) { alert(value.code + '_' + value.issuedt); // 这里可以进一步处理数据,如填充下拉列表 }); } }); ``` 3. **Java后端**: 后端Action类需要有一个属性`result1`,它是一个`AuditDivListVO`对象的列表,用于存储从数据库查询到的数据。`AuditDivListVO`类需要有对应的get和set方法,以便Struts2能够序列化。 ```java public class AuditAction extends ActionSupport { private List<AuditDivListVO> result1; // getters and setters... public String AuitQueryIssueData() throws Exception { // 从数据库获取数据 result1 = dao.list1(adfvo); return "success"; } } // AuditDivListVO 类定义 public class AuditDivListVO { private String code; private String issuedt; // getters and setters... } ``` 数据库操作部分(DAO层)通常会封装SQL查询,返回一个`AuditDivListVO`对象的列表。在本例中,`list1()`方法负责从`MST_ADM_ISSUE_DIV_IN`表中查询`CODE`和`ISSUEDT`字段。 总结,Struts2、Ajax和JSON的组合使用使得前端能够动态地从服务器获取数据并更新页面,而无需刷新整个页面。这提高了应用的性能和用户体验。在实际项目中,这种技术常用于表格数据的动态加载、表单验证等场景。同时,注意在处理JSON返回值时,确保正确解析和使用数据,避免出现“[object, object]”这样的错误提示。





























- 粉丝: 1
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 微信小程序转支付宝小程序命令行工具.zip
- 监理投标第二章.doc
- c&c++课程设计-学生成绩管理系统.7z
- 微信小程序--小商城.zip
- 网架工程监理细则.doc
- 微信小程序-2048小游戏.zip
- 猫眼电影_Taro_微信小程序_React.zip
- 主楼130厚现浇板计算书.docx
- 西安某商业项目营销策划方案.doc
- 细胞外Ca2+浓度对坐骨神经——腓肠肌收缩的影响.docx
- 微信小程序:Github今日榜单.zip
- [河北]某工程岩土工程勘察报告.doc
- 微信小程序-从零开始Demo.zip
- 微信小程序,微信小应用,微信开发.zip
- 小区物业管理方案示范文本.doc
- 第十二章动量矩定理.pdf



评论0