我想要做的是,只需將數據發佈到服務器並使用JSON從服務器獲取數據& AJAX。 我正在將遺留的非AJAX項目轉換爲AJAX。它是liferay portlet spring ibatis jquery項目。表單提交是成功的,我無法像JSON那樣從服務器檢索數據。我使用spring-mvc-jquery-autocomplete-example 示例來學習JSON的傑克遜。這很容易,甚至不需要我去思考JSON。 我只是複製粘貼兩個jar文件在我的構建路徑和註釋@ResponseBody我的方法。但仍然迴應是完整的HTML頁面。爲什麼?AJAX JSON數據檢索(Portlet + Liferay + JSON + Spring)
JSP代碼在這裏
<portlet:actionURL var="formAction">
<portlet:param name="action" value="submit"/>
</portlet:actionURL>
<c:set var="formPortletNamespace">form<portlet:namespace/></c:set>
<form:form method="post" action="${formAction}" commandName="uiState" id="${formPortletNamespace}" cssClass="travelInsurancePortletForm jqCustomStyle" autocomplete="off">
<% /* Selected action as a parameter */ %>
<input type="hidden" name="portletAction" id="portletAction"/>
<form:hidden path="quote.quotingWebApp" />
JS代碼在這裏。代碼提交表單到服務器
function doPortletAction(actionName) {
jQuery('form#form<portlet:namespace/> input#portletAction').val(actionName);
jQuery('form#form<portlet:namespace/> input#<portlet:namespace/>-posted').val('true');
//jQuery('form#form<portlet:namespace/>').submit();
jQuery.ajax({
url: jQuery('#form<portlet:namespace/>').attr("action"),
type: 'POST',
datatype:'json',
data: jQuery('#form<portlet:namespace/>').serialize(),
success: onAjaxSubmitReturn
});
}
控制器編碼
@Controller
@RequestMapping("VIEW")
public class MyController{
@ActionMapping(params="portletAction=myAction")
public @ResponseBody UiState myAction(
PortletSession session,
ActionResponse response,
@RequestParam(value="endDate", required=false) Date endDate,
@ModelAttribute("uiState") UiState requestUiState,
BindingResult errors,
ModelMap mm) throws Exception {
UiState uiState=new UiState();
return uiState;
}
我不是確定UiState是什麼,但它可能以默認的「text/html」內容類型來響應。你需要在你的'myAction'方法中聲明你的響應類型爲「application/json」。 – 2014-11-25 17:10:02
謝謝。我可以通過使用彈簧控制器來加載JSON數據。 – Sanka 2014-12-01 06:31:09