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.
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
public void serveResource(ResourceRequest resourceRequest, ResourceResponse resourceResponse) {
Map<String, Object> data = new HashMap<String, Object>();
data.put("test1", "test1test1test1test1test1");
super.writeJSON(request, response, new Gson().toJson(data));
}
来源:https://stackoverflow.com/questions/17744933/liferay-ajax-request-and-json-response