我正在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>
使用ajax post方法的-javascript方法:
<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类看起来像:
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 cotroller(syso出现在控制台)......
总之,问题是我无法在我的javascript中调用Json对象,并且警报(数据)永远不会执行...
提前感谢任何小费!!!
答案 0 :(得分:1)
问题是,当您执行actionURL时页面会刷新。您需要使用资源服务Portlet,serveResource方法和在调用时不刷新页面的resourceURL。
答案 1 :(得分:0)
使用serveResource()....并从jsp使用resourceURL