我有一个代码
@RenderMapping
public ModelAndView model(RenderRequest renderRequest, ModelMap map) {
map.put("form", form);
ModelAndView view = new ModelAndView("view", map);
PortletSession portletSession = renderRequest.getPortletSession(true);
if(portletSession != null) {
MappingJacksonJsonView v = new MappingJacksonJsonView();
view.setView(v);
view.addObject("dataListCustomer", portletSession.getAttribute("listCustomer"));
}
init(renderRequest, view);
return view;
}
我有一个错误:
java.lang.IllegalArgumentException: application/json is not a supported mime type
at com.liferay.portlet.MimeResponseImpl.setContentType(MimeResponseImpl.java:159)
错误是由view.setView(v);
引起的
如何将 listCustomer 添加到 JSON?在 listCustomer 中我有一个 ModelMap
<小时/>我有代码:
@ResourceMapping(value="customer")
public ModelAndView customer(
ResourceRequest req,
ResourceResponse res) {
log.debug("List Customer Resource: " + context.getCustomer());
ModelAndView mav = new ModelAndView();
MappingJacksonJsonView v = new MappingJacksonJsonView();
v.setBeanName("ajaxResult");
mav.setView(v);
mav.addObject("customer", context.getCustomer());
return mav;
}
客户在@ActionMapping函数中设置,就可以了。
在 JSP 中我有:
<portlet:resourceURL escapeXml="false" id="customer" var="customer"/>
如何调用@ResourceMapping函数?因为我在日志中没有看到 log.debug("List Customer Resource: "+ context.getCustomer());
的结果。
最佳答案
对于ajax(带有门户),您不能使用RenderMapping(或ActionMapping),您必须使用ResourceMapping(如果需要ResourceRequest和ResourceResponse作为方法参数)。
例如,不使用 spring 但更改微不足道,see this SO answer .
关于java - Liferay + JSON + AJAX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13270776/