在 WebSphere Portal Portlet 中获取自定义 @proceesAction 的响应
Getting response form custom @proceesAction in WebSphere Portal Portlet
我正在 WebSphere Portal 8 中开发一个 Portlet,我在从自定义 @processAction 方法获取响应时遇到问题,调用并执行了该方法,但在 jsp我无法获取返回的数据。
我有一个 jsp 文件,其中包含:
-portlet actionURL 的定义...
<portlet:defineObjects/>
<portlet:actionURL var="cargarListadoConcursosURL">
<portlet:param name="<%=ActionRequest.ACTION_NAME%>" value="cargarListadoConcursos" />
</portlet:actionURL>
-JavaScript 方法与 ajax post 方法:
<script type="text/javascript">
$(document).ready(function() {
cargarListadoConcursos();
});
function cargarListadoConcursos() {
$.ajax({
url : '<%=cargarListadoConcursosURL%>',
type : 'POST',
dataType : 'json',
success : function(data) {
alert(data);
//do something!!!
}
});
}
我的 portlet class 看起来像:
public class ListadoConcursosPortlet extends GenericPortlet
{
//more methods...
@ProcessAction(name="cargarListadoConcursos")
public void cargarListadoConcursos(ActionRequest request, ActionResponse response) throws PortletException, IOException {
HttpServletResponse resp = PortletUtils.getHttpServletResponse(response);
resp.setContentType("application/json");
resp.setCharacterEncoding("UTF-8");
PrintWriter writer = resp.getWriter();
writer.append(gson.toJson(new ArrayList<Concurso>()));
writer.flush();
resp.flushBuffer();
System.out.println("Paso por cargarListadoConcursos");
}
}
我认为 portlet.xml 很好,因为 jsp 调用了 portlet 控制器(syso 出现在控制台)...
总而言之,问题是我无法在我的 JavaScript 调用中获取 JSON 对象,并且警报(数据)永远不会执行...
使用 serveResource()....从 jsp 使用 resourceURL
问题是当您输入 actionURL 时页面会刷新。您需要使用资源服务 Portlet、serveResource 方法和调用时不刷新页面的 resourceURL。
我正在 WebSphere Portal 8 中开发一个 Portlet,我在从自定义 @processAction 方法获取响应时遇到问题,调用并执行了该方法,但在 jsp我无法获取返回的数据。
我有一个 jsp 文件,其中包含:
-portlet actionURL 的定义...
<portlet:defineObjects/>
<portlet:actionURL var="cargarListadoConcursosURL">
<portlet:param name="<%=ActionRequest.ACTION_NAME%>" value="cargarListadoConcursos" />
</portlet:actionURL>
-JavaScript 方法与 ajax post 方法:
<script type="text/javascript">
$(document).ready(function() {
cargarListadoConcursos();
});
function cargarListadoConcursos() {
$.ajax({
url : '<%=cargarListadoConcursosURL%>',
type : 'POST',
dataType : 'json',
success : function(data) {
alert(data);
//do something!!!
}
});
}
我的 portlet class 看起来像:
public class ListadoConcursosPortlet extends GenericPortlet
{
//more methods...
@ProcessAction(name="cargarListadoConcursos")
public void cargarListadoConcursos(ActionRequest request, ActionResponse response) throws PortletException, IOException {
HttpServletResponse resp = PortletUtils.getHttpServletResponse(response);
resp.setContentType("application/json");
resp.setCharacterEncoding("UTF-8");
PrintWriter writer = resp.getWriter();
writer.append(gson.toJson(new ArrayList<Concurso>()));
writer.flush();
resp.flushBuffer();
System.out.println("Paso por cargarListadoConcursos");
}
}
我认为 portlet.xml 很好,因为 jsp 调用了 portlet 控制器(syso 出现在控制台)...
总而言之,问题是我无法在我的 JavaScript 调用中获取 JSON 对象,并且警报(数据)永远不会执行...
使用 serveResource()....从 jsp 使用 resourceURL
问题是当您输入 actionURL 时页面会刷新。您需要使用资源服务 Portlet、serveResource 方法和调用时不刷新页面的 resourceURL。