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

Posted

技术标签:

【中文标题】在 WebSphere Portal Portlet 中获取来自自定义 @proceesAction 的响应【英文标题】:Getting response form custom @proceesAction in WebSphere Portal Portlet 【发布时间】:2015-03-29 00:07:58 【问题描述】:

我正在 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 控制器(syso 出现在控制台上)...

总之,问题是我无法在我的 JavaScript 调用中获取 JSON 对象,并且永远不会执行警报(数据)...

【问题讨论】:

使用serveResource()....并从jsp使用resourceURL @LakshminarayanMohan 感谢您的提示!这正是我需要的!拜托,你能把这个回复成一个答案,这样我就可以标记为已回答? 【参考方案1】:

问题是当您使用 actionURL 时页面会刷新。您需要使用 Resource Serving Portlet、serveResource 方法和调用时不刷新页面的 resourceURL。

【讨论】:

【参考方案2】:

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

【讨论】:

以上是关于在 WebSphere Portal Portlet 中获取来自自定义 @proceesAction 的响应的主要内容,如果未能解决你的问题,请参考以下文章

如何在可视化工具中配置 websphere portal 8 derby 数据库?

如何启动websphere 的服务

求助,websphere发布war包时间很慢

求助,websphere发布war包时间很慢

websphere如何重启nodeagent

在 websphere 7 中关闭数据库连接失败(托管连接清理失败),但在 websphere 6.1 中没有