jqueryliferayliferay-aui

Liferay ajax request and JSON response


I am new in Liferay. I used service builder to create database. I populated them manually. And eventually I could call them in JSP using PersonLocalServiceUtil class. Now I want to use Ajax in my program.

For example: Person with attributes personID, personWeight, personTemperature and datetime are stored in database.

I want to do an ajax call by personID to see his weight or Temperature graph for particular timeline. All I know, I can call list from Database to controller But I don't know How can I convert it to JSON obejct and forward it to JSP upon request, so that JSP won't refresh the page but display new graph.


Solution

  • You can send person id from jsp using ajax request and you can fetch data inside controller(serveResource method) i.e

    You need to create URL

    <portlet:resourceURL var="resourceURL" >
    </portlet:resourceURL>
    

    Ajax Call

    $.ajax({
      url : '${resourceURL}',
      data : data,//person id to sent
      type: 'POST',
      dataType : "json",
      success : function(data) {
        // get person data back from controller
      }
    });
    

    Controller part

    public void serveResource(ResourceRequest resourceRequest, ResourceResponse resourceResponse) {
    
        //get person id using getparameter 
    
        JSONObject json = JSONFactoryUtil.createJSONObject();
    
        json.put("jsonData", "person details");
        response.getWriter().write(json.toString());
    
    }
    

    HTH