Struts2, AJAX, json-plugin to use

sponsored links



Codes, please refer to http://acheron.javaeye.com/admin/blogs/402499

JSON Official Document

http://www.json.org/json-zh.html

jQuery Official Document

http://docs.jquery.com/Main_Page

Js Code
  1. <SPAN> Function removerecordbyid (recordid) (
  2. $ ( "# showallrecord table tr"). each (
  3. function () (
  4. var seq = parseInt ($ (this). children ( "td"). html ());
  5. var thisrecord = this;
  6. if (seq == recordid)
  7. if (confirm ( "you to confirm the implementation of the deletion Yao ?")){
  8. $. ajax ((
  9. type: "POST",
  10. url: "removeRecordById.action",
  11. dataType: "json",
  12. data: ( "msg.id": recordid),
  13. success: function (json) (
  14. if (json.status == 4) (
  15. alert ( "Delete failed, only the ip in order to submit comments to delete");
  16. ) Else (
  17. $ (thisrecord). remove ();
  18. / / Alert ( "deleted successfully");
  19. )
  20. )
  21. error: function () (
  22. alert ( "del error");
  23. )
  24. ));
  25. )
  26. ));
  27. )
  28. function getrecordbypage (page) (
  29. $. ajax ((
  30. type: "POST",
  31. url: "listAllRecordByPage.action",
  32. dataType: "json",
  33. data: ( "page": page),
  34. success: function (json) (
  35. var strs = "<table border=\"1\"> <tr> <td> key-id </ td> <td> nickname </ td> <td> Message Time </ td> <td width = '120 ' "E-mail </ td> <td width='120'> blog </ td> <td width='250'> message </ td> <td> Operation </ td> </ tr>";
  36. for (i = 0; i <json.records.length; i + +) (
  37. str = "<tr'"+json.records[i].id+"'> <td>" + json.records [i]. id + "</ td> <td>" + json.records [i]. from + "</ td> <td>" + json.records [i]. addDate + "</ td> <td>" + json.records [i]. mail + "</ td> <td>" + json.records [ i]. site + "</ td> <td>" + json.records [i]. cont + "</ td> <td> <a'removerecordbyid("+json.records[i].id+");'> Remove </ a> </ td> </ tr> "
  38. strs = strs + str
  39. )
  40. strs = strs + "</ table>"
  41. $ ( "# showallrecord"). html (strs);
  42. )
  43. error: function () (
  44. alert ( "error");
  45. )
  46. ));
  47. ); </ SPAN>

function removerecordbyid(recordid){ 
                $("#showallrecord table tr").each(
                function(){
                  var seq=parseInt($(this).children("td").html());
                  var thisrecord = this;
                  if(seq==recordid)
                        if(confirm(" You acknowledge that the deletion?  ?")){
                                $.ajax({
                                        type: "POST",
                                        url:"removeRecordById.action",
                                        dataType:"json",
                                        data:{"msg.id":recordid},
                                        success:function(json){
                                                if(json.status==4){
                                                        alert(" Delete fails, only submit messages  ip In order to delete  ");
                                                }else{
                                                        $(thisrecord).remove();
//                                                      alert(" Removed successfully  ");  
                                                }
                                        },
                                        error:function(){
                                                alert("del error");
                                        }
                                });
                        }
                });
        }
        
        
                function getrecordbypage(page){
                $.ajax({
                        type: "POST",
                        url:"listAllRecordByPage.action",
                        dataType:"json",
                        data:{"page":page},
                        success:function(json){
                                var strs="<table border=\"1\"><tr><td>key-id</td><td> Nickname  </td><td> Message time  </td><td width='120'> Mailbox  </td><td width='120'> Blog  </td><td width='250'> Message  </td><td> Operation  </td></tr>";
                                for(i=0;i<json.records.length;i++){
                                        str="<tr'"+json.records[i].id+"'><td>"+json.records[i].id+"</td><td>"+json.records[i].from+"</td><td>"+json.records[i].addDate+"</td><td>"+json.records[i].mail+"</td><td>"+json.records[i].site+"</td><td>"+json.records[i].cont+"</td><td><a'removerecordbyid("+json.records[i].id+");'> Delete  </a></td></tr>"
                                        strs=strs+str
                                }
                                strs=strs+"</table>"
                                $("#showallrecord").html(strs);
                        },
                        error:function(){
                                alert("error");
                        }
                });
                
        };


Note dataType: "json" This parameter must not be less, or not correctly identify the

What is a Struts action code

Java code
  1. <SPAN> Public class CrudMsgAction extends ActionSupport (
  2. private Record msg;
  3. private int index;
  4. private RecordService recordService;
  5. private List <Record> records;
  6. private int status = 0;
  7. private int page = 0;
  8. @ JSON (serialize = false)
  9. public RecordService getRecordService () (
  10. return recordService;
  11. )
  12. / / other getter and setter
  13. @ Override
  14. public String execute () throws Exception (
  15. return SUCCESS;
  16. )
  17. / **
  18. * Returns all the records of the JSON data
  19. * @ Return list. All of the record.
  20. * @ Throws Exception
  21. * /
  22. public String listAllRecord () throws Exception (
  23. List <Record> list = recordService.listAllRecord ();
  24. / / List list = Arrays.asList (allRecord);
  25. / / List <Record> list2 = (List <Record>) list;
  26. / / Record rec = (Record) list.get (0);
  27. records = list;
  28. return SUCCESS;
  29. )
  30. public String listAllRecordByPage () throws Exception (
  31. List <Record> list = recordService.listAllRecord (page);
  32. records = list;
  33. return SUCCESS;
  34. )
  35. / **
  36. * Insert Record
  37. * @ Return update the view with AJAX when struts2 action return
  38. * @ Throws Exception
  39. * /
  40. public String insertRecord () throws Exception (
  41. / / Insert the message date is set
  42. msg.setAddDate (new Date ());
  43. / / Get client ip, setIpaddr
  44. String clientIpAddr = ServletActionContext.getRequest (). GetRemoteAddr ();
  45. msg.setIpaddr (clientIpAddr);
  46. / / Determine whether the empty
  47. if ( "". equals (msg.getFrom ())) msg.setFrom ( "anonymous");
  48. if ( "". equals (msg.getMail ())) msg.setMail ("@");
  49. if ( "". equals (msg.getSite ())) msg.setSite ("-");
  50. if ( "". equals (msg.getCont ())) msg.setCont ( "This guy lazy, not really done anything");
  51. recordService.insertRecord (msg);
  52. return SUCCESS;
  53. )
  54. / **
  55. * Through the index to find records
  56. * @ Return the field msg
  57. * @ Throws Exception
  58. * /
  59. public String listRecordByIndex () throws Exception (
  60. List <Record> list = recordService.listAllRecord ();
  61. this. msg = list.get (this. getIndex ());
  62. return SUCCESS;
  63. )
  64. / **
  65. * Remove the corresponding record id
  66. * @ Return field status. In order to update view with AJAX
  67. * @ Throws Exception
  68. * /
  69. public String removeRecordById () throws Exception (
  70. String clientIpAddr = ServletActionContext.getRequest (). GetRemoteAddr ();
  71. Record r = recordService.listRecordById (msg.getId ());
  72. if (clientIpAddr.equals (r.getIpaddr ())){
  73. recordService.removeRecordById (msg.getId ());
  74. return SUCCESS;
  75. )
  76. status = 4;
  77. return SUCCESS;
  78. )
  79. / **
  80. * Access to sub-pages
  81. * @ Return pageSize using field page
  82. * @ Throws Exception
  83. * /
  84. public String getPageSize () throws Exception (
  85. page = recordService.getPage ();
  86. return SUCCESS;
  87. )
  88. ) </ SPAN>

public class CrudMsgAction extends ActionSupport{
        private Record msg;
        private int index;
        private RecordService recordService;
        private List<Record> records;
        private int status = 0;
        private int page = 0;
        
        @JSON(serialize=false)
        public RecordService getRecordService() {
                return recordService;
        }
//other getter and setter
        @Override
        public String execute() throws Exception {
                return SUCCESS;
        }
        
        /**
         *  Returns all records of the JSON data  
         * @return list . All of the record.
         * @throws Exception
         */     
        public String listAllRecord() throws Exception{
                List<Record> list = recordService.listAllRecord();
//              List list = Arrays.asList(allRecord);
//              List<Record> list2 = (List<Record>)list;

                //              Record rec = (Record)list.get(0);
                records = list;
                return SUCCESS;
        }
        
        public String listAllRecordByPage() throws Exception{
                List<Record> list = recordService.listAllRecord(page);
                records = list;
                return SUCCESS;
        }
        

        /**
         *  Insert records  
         * @return update the view with AJAX when struts2 action return
         * @throws Exception
         */
        public String insertRecord() throws Exception{
                // Insert message date settings  
                msg.setAddDate(new Date());
                // Gets the client  ip,setIpaddr
                String clientIpAddr = ServletActionContext.getRequest().getRemoteAddr();
                msg.setIpaddr(clientIpAddr);
                // Judgment is empty  
                if("".equals(msg.getFrom()))msg.setFrom("anonymous");
                if("".equals(msg.getMail()))msg.setMail("@");
                if("".equals(msg.getSite()))msg.setSite("-");
                if("".equals(msg.getCont()))msg.setCont(" This guy is very lazy, nothing left  ");
                
                recordService.insertRecord(msg);
                return SUCCESS;
        }
        /**
         *  Find a record by index  
         * @return the field msg
         * @throws Exception
         */
        public String listRecordByIndex() throws Exception{
                List<Record> list = recordService.listAllRecord();
                this.msg = list.get(this.getIndex());
                
                return SUCCESS;
        }
        /**
         *  Delete the corresponding ID records  
         * @return field status. in order to update view with AJAX
         * @throws Exception
         */
        public String removeRecordById() throws Exception{
                String clientIpAddr = ServletActionContext.getRequest().getRemoteAddr();
                Record r = recordService.listRecordById(msg.getId());
                if(clientIpAddr.equals(r.getIpaddr())){
                        recordService.removeRecordById(msg.getId());
                        return SUCCESS;
                }
                status = 4;
                return SUCCESS;
        }
        
        /**
         *  Get pages  
         * @return pageSize using field page
         * @throws Exception
         */
        public String getPageSize() throws Exception{
                page = recordService.getPage();
                return SUCCESS;
        }
}


In the above code, the use of the JSON Notes @ JSON (serialize = false),
In addition, JSON Notes also supports several of the fields as follows:
name: specify the Action attribute to be serialized into JSON object's property name.
serialize: settings are the property serialization
deserialize: Set whether to deserialize the property.
format: setting is used to format the output, parse the date form field format. For example, "yyyy-MM-dd'T'HH: mm: ss".

Xml Code
  1. <SPAN> <? Xml version = "1.0" encoding = "UTF-8"?>
  2. <! DOCTYPE struts PUBLIC
  3. "- / / Apache Software Foundation / / DTD Struts Configuration 2.0 / / EN"
  4. "http://struts.apache.org/dtds/struts-2.0.dtd">
  5. <struts>
  6. <constant name="struts.objectFactory" value="spring" />
  7. <package name="json" extends="json-default">
  8. <action name="ajaxRequest">
  9. <result type="json" />
  10. </ action>
  11. <action name="listIndexRecord">
  12. <result type="json" />
  13. </ action>
  14. <action name="listAllRecord" method="listAllRecord">
  15. <result type="json" />
  16. </ action>
  17. <action name="listAllRecordByPage" method="listAllRecordByPage">
  18. <result type="json" />
  19. </ action>
  20. <action name="insertRecord" method="insertRecord">
  21. <result type="json" />
  22. </ action>
  23. <action name="removeRecordById" method="removeRecordById">
  24. <result type="json" />
  25. </ action>
  26. <action name="getPageIndex" method="getPageSize">
  27. <result type="json" />
  28. </ action>
  29. </ package>
  30. </ struts> </ SPAN>

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
<constant name="struts.objectFactory" value="spring"/>
        <package name="json" extends="json-default">
                <action name="ajaxRequest">
                        <result type="json" />
                </action>
                <action name="listIndexRecord">
                        <result type="json" />
                </action>
                <action name="listAllRecord" method="listAllRecord">
                        <result type="json" />
                </action>
                <action name="listAllRecordByPage" method="listAllRecordByPage">
                        <result type="json" />
                </action>
                <action name="insertRecord" method="insertRecord">
                        <result type="json" />
                </action>
                <action name="removeRecordById" method="removeRecordById">
                        <result type="json" />
                </action>
                <action name="getPageIndex" method="getPageSize">
                        <result type="json" />
                </action>
                
        </package>
</struts>

Configure the Action and configuration there is little difference between ordinary Action.

Package inherited the json-default package, rather than inherit the default default package, this is because only under the package only json type Result.
result can be used <param name="excludeProperties"> page, index </ param>
Action does not exclude the return of these properties.

Combined action in the annotation attribute getter method @ JSON (serialize = false) and flexible configuration

Exception address:

Xml Code
  1. Nested in javax.servlet.ServletException: com.googlecode.jsonplugin.JSONException: com.googlecode.jsonplugin.JSONException: com.googlecode.jsonplugin.JSONException: com.googlecode.jsonplugin.JSONException: com.googlecode.jsonplugin.JSONException: com. googlecode.jsonplugin.JSONException: java.lang.reflect.InvocationTargetException:
  2. com.google.apphosting.utils.jetty.JettyLogger warn

Nested in javax.servlet.ServletException: com.googlecode.jsonplugin.JSONException: com.googlecode.jsonplugin.JSONException: com.googlecode.jsonplugin.JSONException: com.googlecode.jsonplugin.JSONException: com.googlecode.jsonplugin.JSONException: com.googlecode.jsonplugin.JSONException: java.lang.reflect.InvocationTargetException:

com.google.apphosting.utils.jetty.JettyLogger warn


Here here are 4-5 pages of exceptions, which is not posted out

Solution:

Emergence of this problem is an attribute of data through serialization json abnormal

Since the use of the spring into the properties of recordService, also is to provide a getter and setter,

The sturts-plugin by getterXxx the Xxx output JSON serialization attributes to the client,

Therefore, the methodology is to solve this exception does not require serialization of the property getter added before annotation,

Is @ JSON (Serialize = false)

Code such as:

Java code
  1. @ JSON (serialize = false)
  2. public RecordService getRecordService () (
  3. return recordService;
  4. )

@JSON(serialize=false)

    public RecordService getRecordService() {

       return recordService;

    }

  • del.icio.us
  • StumbleUpon
  • Digg
  • TwitThis
  • Mixx
  • Technorati
  • Facebook
  • NewsVine
  • Reddit
  • Google
  • LinkedIn
  • YahooMyWeb

Related Posts of Struts2, AJAX, json-plugin to use

  • Dynamic loading JS script four kinds of methods

    To achieve dynamic loading JS script has four kinds of methods: 1, direct document.write <script language="javascript"> document.write ( "<script src='test.js'> <\ / script>"); </ script> 2, dynamic scri

  • Hibernate primary key strategy-sequence

    Today, the use of hibernate in the company encountered a troublesome problem, the use of hibernate when the primary key generation strategy set sequence, but always reported in the implementation could not get next sequence value of the error, then o ...

  • Hibernate pessimistic locking mechanism for locking and optimistic locking

    hibernate lock mechanism 1. Pessimistic lock It refers to the modification of data by outsiders hold a conservative attitude. The assumption that at any time access to data, may also have another client to access the same data, in order to maintain t ...

  • spring + hibernate + oracle9i to read and write CLOB

    Database-driven update classes12-9i.jar Hibernate modify the configuration of the following code <bean/> <bean Lazy-init="true"> <property name="nativeJdbcExtractor"> <ref local="nativejdbcExtractor"/>

  • Process migration from tomcat to websphere changes

    Process migration from tomcat to websphere changes Because customers use the web application server software used by different what tomcat5, tomcat6, websphere5.1, websphere6.1, weblogic8, and so on, and the software used inconsistent standards, ibm's

  • Nan-Jing 5: When IBatis.Hibernate mixed affairs, pay attention to your SQL

    [Problem] Now, in the development of the so-called multi-storey JavaEE applications, data persistence layer is always essential, and "Automatic" of ORM - Hibernate, and "all-manual-type" of SqlMap - IBatis, equivalent data are Per ...

  • hibernate to use the principle of

    The use of hibernate, implementation of data persistence. Has the following several processes. One configuration database connection information. Hibernate.config 2 configuration mapping. 3 use: the use of the process are the following steps: 3.1: Ge ...

  • Based on JDBC, JPA Annotation achieve simple CRUD Generic Dao

    The origin of ideas are pretty long history of reasons: [Use iBATIS history] The use of iBATIS has been a long time, the system is to use the CRUD template tool to generate the code, although there are tools to generate, but looked at a lot of CRUD the Sq

  • The level Hibernate cache

    Hibernate cache level: (1) a cache is very short and the session life cycle consistent, also known as session-level cache-level cache or transaction-level cache (2) Ways of Supporting level cache: get (); load (); iterator (); only entity object cach ...

  • Hibernate's lazy strategy

    hibernate Lazy strategy can be used in: <class> tag, it can be true / false Tags can <PROPERTY> values true / false type of necessary tools to enhance <set> <list> can tag values true / false / extra <many-to-one> <on ...

blog comments powered by Disqus
Recent
Recent Entries
Tag Cloud
Random Entries