java - 如何从WebSphere Portal 页面获取页面名称?

标签 java websphere portlet portal

我正在为 WebSphere Portal 8 创建一个 portlet,并且想要检索呈现我的 portlet 的页面名称。这很重要,因为根据页面的不同,Portlet 将以不同的方式提供内容

我尝试使用 NavigationSelectionModel API,但认为我没有正确使用它。我希望此代码在渲染 View 之前发生,并将代码放入 doView 方法中。问题是我无法转换 ServletRequest/Response,因为我在 doView 方法中只有 RenderRequest 和 RenderResponse 可用。

public void doView(RenderRequest request, RenderResponse response)
            throws PortletException, IOException {
        // Declarations
        List<ForeignAuthority> faList = new ArrayList<ForeignAuthority>();
        String resp;

        // Set the MIME type for the render response
        response.setContentType(request.getResponseContentType());

        // Check if portlet session exists
        ForeignAuthoritiesPortletSessionBean sessionBean = getSessionBean(request);
        if (sessionBean == null) {
            response.getWriter().println("<b>NO PORTLET SESSION YET</b>");
            return;
        }

        try{
        Context ctx = new InitialContext();
        NavigationSelectionModelHome home = (NavigationSelectionModelHome) 
            ctx.lookup("portal:service/model/NavigationSelectionModel");
        if (home != null) {
            NavigationSelectionModelProvider provider = 
                home.getNavigationSelectionModelProvider();
            NavigationSelectionModel model = 
                provider.getNavigationSelectionModel((ServletRequest)request, (ServletResponse)response);
            for (java.util.Iterator i = model.iterator(); i.hasNext(); ) 
            {
                NavigationNode node = (NavigationNode) i.next();
                if (i.hasNext()) {
                    System.out.println(node.getObjectID().getUniqueName());
                }
            }
        }
        }catch(Exception e){
            e.printStackTrace();
        }

        PortletRequestDispatcher rd = getPortletContext()
                .getRequestDispatcher(getJspFilePath(request, VIEW_JSP));
        rd.include(request, response);
}

预期结果是检索页面名称或呈现 portlet 的当前页面的唯一名称。

最佳答案

您可以尝试下面的代码片段是否有帮助。您可以获取 URI 值并从中提取页面名称。

HttpServletRequest httpServletRequest = PortletUtils.getHttpServletRequest(renderRequest); httpServletRequest.getRequestURI();

关于java - 如何从WebSphere Portal 页面获取页面名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55838519/

相关文章:

mysql - java.lang.NoClassDefFoundError : com/mysql/jdbc/StringUtils 错误

java - `p12` 文件在 Firefox RestClient 中有效,但在 WebSphere 中无效

ruby-on-rails - 从 Ruby On Rails 应用程序生成 Liferay Portlet

java - 简单的portlet jsp页面流问题

java - 当excel单元格中没有值时,显示错误

java - 我可以从 Java 模块中排除导出的包吗?

java - 在 WAS 上找不到 sun.security.util.DerValue

error-handling - 自定义Liferay错误消息

java - 使用 Java 将 Firefox 的 Selenium IDE 转换为 Chrome 和 Internet Explorer

java - 让 ImageIcon 适合 JButton 的大小