Result的type屬性的stream取值。javascript
1 public class UserAction 2 { 3 private String uname; 4 //聲明輸入流對象
5 private InputStream inputStream; 6 public InputStream getInputStream() 7 { 8 System.out.println("-------------getInputStream"); 9 return inputStream; 10 } 11 public String getUname() 12 { 13 return uname; 14 } 15 public void setUname(String uname) 16 { 17 this.uname = uname; 18 } 19 //org.apache.struts2.dispatcher.StreamResult
20 /**驗證用戶名的惟一性***/
21 public String unameIsExists() 22 { 23 System.out.println("----------unameIsExists"); 24 List<String> list = new ArrayList<String>(); 25 list.add("admin"); 26 list.add("lisi"); 27 String msg=null; 28 if(list.contains(uname)) 29 { 30 msg="用戶名不可用..."; 31 } 32 else
33 { 34 msg="用戶名可用..."; 35 } 36 //將msg響應到客戶端,將msg中的數據封裝到InputStream
37 try
38 { 39 inputStream=new ByteArrayInputStream(msg.getBytes("UTF-8")); 40 } 41 catch (Exception e) 42 { 43 // TODO Auto-generated catch block
44 e.printStackTrace(); 45 } 46 return "ajax"; 47 } 48 }
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE struts PUBLIC 3 "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" 4 "http://struts.apache.org/dtds/struts-2.3.dtd">
5 <struts>
6 <package name="user" namespace="/" extends="struts-default">
7 <action name="userAction_*" class="com.guangsoft.action.UserAction"
8 method="{1}">
9 <result name="ajax" type="stream">
10 <param name="inputName">inputStream</param>
11 </result>
12 </action>
13 </package>
14 </struts>
1 <script type="text/javascript" src="js/jquery-1.8.3.min.js"></script>
2 <script type="text/javascript">
3 function sendReuqest() 4 { 5 var uname=$("#uname").val(); 6 $.post("userAction_unameIsExists.action","uname="+uname,function(data) 7 { 8 $("#sp").html(data); 9 }); 10 } 11 </script>
12 </head>
13 <body>
14 <input type="text" id="uname" onblur="sendReuqest()" />
15 <span id="sp"></span>
16 </body>
當請求發送到服務器上,先執行處理請求的方法,經過處理請求的方法的返回值,查找對應的result,若是result的type屬性爲stream,自動調用inputName屬性對應的值對應的get方法,得到流對象。html
struts2-json-plugin-2.3.16.1.jarjava
1 public class UserAction2 2 { 3 UsersDao dao = new UsersDaoImpl(); 4 private Users user; 5 private List<Users> ulist; 6 //將ulist集合做爲json對象的集合響應到客戶端
7 public List<Users> getUlist() 8 { 9 System.out.println("-----------getUlist"); 10 return ulist; 11 } 12 public Users getUser() 13 { 14 return user; 15 } 16 public void setUser(Users user) 17 { 18 this.user = user; 19 } 20 //org.apache.struts2.json.JSONInterceptor
21 /***驗證用戶名是否能夠:將不可用的用戶名所有響應到客戶端**/
22 public String unameExistsList() 23 { 24 System.out.println("-------------unameExistsList"); 25 ulist=dao.selectUanemByUname(user.getUname()); 26 //將ulist集合做爲json對象的集合響應到客戶端
27 return "ajax"; 28 } 29 }
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE struts PUBLIC 3 "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" 4 "http://struts.apache.org/dtds/struts-2.3.dtd">
5 <struts>
6 <package name="user" namespace="/" extends="json-default">
7 <action name="userAction_*" class="com.guangsoft.action.UserAction"
8 method="{1}">
9 <result name="ajax" type="stream">
10 <param name="inputName">inputStream</param>
11 </result>
12 </action>
13 <action name="userAction2_*" class="com.guangsoft.action.UserAction2"
14 method="{1}">
15 <result name="ajax" type="json">
16 <param name="root">ulist</param>
17 </result>
18 </action>
19 </package>
20 </struts>
1 <head>
2 <script>
3 function sendReuqest() 4 { 5 var uname=$("#uname").val(); 6 $.post("userAction2_unameExistsList.action","user.uname="+uname,function(data) 7 { 8 //alert(data);
9 var div=$("#div"); 10 div.html(""); //清空
11 //對json集合進行遍歷
12 $(data).each(function(index,item) 13 { 14 //alert(index+" "+item);
15 //div.html(item.uname);
16 div.append("
17 <div>"+item.uname+"</div> 18 ") 19 }); 20 }); 21 } 22 </script>
23 </head>
24 <body>
25 <!-- <input type="text" id="uname" onblur="sendReuqest()"/><span id="sp"></span> -->
26 <input type="text" id="uname" onkeyup="sendReuqest()" />
27 <div style="border: solid 1px red; width: 20%;margin-top: 5px" id="div">
28 </div>
29 </body>
重點:將須要響應到客戶端的數據封裝爲inputStream對象jquery
將msg的內容封裝爲InputStream對象ajax
結果的類型必須爲stream,將流對象的名字賦值給inputName屬性apache
將須要使用json格式響應到客戶端的數據封裝到list集合json
給ulist屬性賦值,自動調用ulist對應的get方法服務器