问题
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.
回答1:
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
回答2:
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