在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
- 资源: 14
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于Django和OpenCV的智能车视频处理系统.zip
- (源码)基于ESP8266的WebDAV服务器与3D打印机管理系统.zip
- (源码)基于Nio实现的Mycat 2.0数据库代理系统.zip
- (源码)基于Java的高校学生就业管理系统.zip
- (源码)基于Spring Boot框架的博客系统.zip
- (源码)基于Spring Boot框架的博客管理系统.zip
- (源码)基于ESP8266和Blynk的IR设备控制系统.zip
- (源码)基于Java和JSP的校园论坛系统.zip
- (源码)基于ROS Kinetic框架的AGV激光雷达导航与SLAM系统.zip
- (源码)基于PythonDjango框架的资产管理系统.zip
评论0