在WebSphere Portal Portlet中获取自定义@proceesAction的响应

时间:2015-01-29 16:55:46

标签: java javascript servlets portlet websphere-portal

我正在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对象,并且警报(数据)永远不会执行...

提前感谢任何小费!!!

2 个答案:

答案 0 :(得分:1)

问题是,当您执行actionURL时页面会刷新。您需要使用资源服务Portlet,serveResource方法和在调用时不刷新页面的resourceURL。

答案 1 :(得分:0)

使用serveResource()....并从jsp使用resourceURL