Struts2 使用jquery、Json實現Ajax的例子和注意點

來源:互聯網
上載者:User

1. 必須的包,一個不能少!!

  json-lib-2.3-jdk15.jar
  struts2-json-plugin-2.3.3.jar
  commons-beanutils-1.8.3.jar, 
  commons-collections-3.2.1.jar, 
  commons-logging-1.1.1.jar, 
  commons-logging-1.1.1.jar, 
  ezmorph-1.0.6.jar  (缺少此包的話,容易導致奇怪問題,如執行中途跳出等)

 

2. struts.xml中

<!-- 此處要繼承一個預設的空間json-default  --><package name="jsonDemo" extends="json-default"><action name="jsonAction" class="action.JsonDemo"><!-- 傳回型別 是json --><result type="json"><!--name必須為root,result是Action中的要返回給前台的屬性名稱  --><param name="root">result</param></result></action></package>

 

3. Action的代碼

public class JsonDemo implements Action {// 用於傳遞資料的屬性private String name;private String result;private Muer mm;public String execute() throws Exception {// TODO Auto-generated method stubSystem.out.println("action");mm = new Muer();mm.setAge("20");mm.setName(name);mm.setLevel("very beautiful");System.out.println("age" + mm.getAge() + "  name:" + mm.getName()+ " level:" + mm.getLevel());JSONObject obj = JSONObject.fromObject(mm);result = obj.toString();System.out.println("JSON字串為:" + result);return SUCCESS;}
//略去各個屬性的getter 和setter方法}

4. jsp 頁面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@taglib prefix="s" uri="/struts-tags" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>  <script type="text/javascript" src="js/jquery.js" ></script>        <title>struts2 ajax json demo1</title><script type="text/javascript">    $(document).ready(function(e) {            $("#btn").click(function(e) {var name = $("#name").val();                                     $.post("jsonAction.action",{name:name},function(data){var mm = eval("("+data+")");alert(mm.name);alert(mm.age);alert(mm.level);},"json");            });        });        </script>  </head>    <body>  <s:textfield name="name"  id="name" theme="simple"/>    <s:submit id="btn" value="showJson"  theme="simple" />  </body></html>

總結一下,要注意幾個地方

 1. 包一個都別少...

 2. 送action傳回的資料要做一次處理 var mm = eval("("+data+")");

3 . 可以用擷取屬性的方式調用eval處理之後的對象 mm.name

 

補充下: struts2使用json傳遞List集合到前台頁面:

//擷取公司對應的庫位 ajaxpublic String getLgortByBukrs(){try {//System.out.println(bukrs);                            //此處通過Service類擷取一個List集合List<T001L> lgortList = t001lServices.getLgortByBukrs(bukrs);                           //將List集合轉換為JSONArray對象JSONArray jArray = JSONArray.fromObject(lgortList);                           //轉換為json串result = jArray.toString();//System.out.println(result);return SUCCESS;} catch (Exception e) {e.printStackTrace();}return null;}

 

 

  

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.