[jboss-user] [JBoss Portal] - Problem with PORTAL_NODE

SSchult do-not-reply at jboss.com
Thu Mar 12 10:52:56 EDT 2009


Hello,

I am trying to show the tab navigation in a portlet

I created a standard portlet and used the content of tabs.jsp (from JBoss 2.7.1) ind my navigation_view.jsp


  | <%@ page import="java.util.Iterator" %>
  | <%@ page import="org.jboss.portal.api.node.PortalNode" %>
  | <%@ page import="java.util.Locale" %>
  | <%@ page import="java.util.ArrayList" %>
  | <%@ page import="org.jboss.portal.api.PortalRuntimeContext" %>
  | 
  | <%
  |    PortalNode root = (PortalNode)request.getAttribute("org.jboss.portal.api.PORTAL_NODE");
  |    PortalNode portal = root;
  |    PortalNode mainPage = portal;
  | 
  |    while (portal.getType() != PortalNode.TYPE_PORTAL)
  |    {
  |       mainPage = portal;
  |       portal = portal.getParent();
  |    }
  | 
  |    PortalRuntimeContext context = (PortalRuntimeContext)request.getAttribute("org.jboss.portal.api.PORTAL_RUNTIME_CONTEXT");
  | 
  |    // Get a locale
  |    Locale locale = request.getLocale();
  |    if (locale == null)
  |    {
  |       locale = Locale.getDefault();
  |    }
  | %>
  | 
  | <ul id="tabsHeader">
  |    <%
  |       ArrayList tmp = new ArrayList(10);
  |       Iterator childrenIt = portal.getChildren().iterator();
  |       while (childrenIt.hasNext())
  |       {
  |          PortalNode child = (PortalNode)childrenIt.next();
  | 
  |          // Get the list of child pages
  |          tmp.clear();
  |          for (Iterator i = child.getChildren().iterator(); i.hasNext();)
  |          {
  |             PortalNode childChild = (PortalNode)i.next();
  |             if (childChild.getType() == PortalNode.TYPE_PAGE)
  |             {
  |                tmp.add(childChild);
  |             }
  |          }
  |    %>
  |    <li <%
  |       if (child == mainPage)
  |       {
  |          out.println(" id=\"current\"");
  |       } %> onmouseover="this.className='hoverOn'"
  |                                                                     onmouseout="this.className='hoverOff'"><a
  |       href="<%= child.createURL(context) %>"><%= child.getDisplayName(locale) %><%
  |       if (tmp.size() == 0)
  |       {
  |    %></a>
  |       <%
  |       }
  |       else
  |       {
  |       %>
  |       <!--[if IE 7]><!--></a><!--<![endif]-->
  |       <!--[if lte IE 6]>&nbsp;&nbsp;&nbsp;<table><tr><td><![endif]-->
  |       <ul>
  |          <%
  |             for (Iterator j = tmp.iterator(); j.hasNext();)
  |             {
  |                PortalNode childChild = (PortalNode)j.next();
  |          %>
  |          <li><a href='<%= childChild.createURL(context) %>'><%= childChild.getDisplayName(locale) %>
  |          </a></li>
  |          <%
  |             }
  |          %>
  |       </ul>
  |       <!--[if lte IE 6]></td></tr></table></a><![endif]-->
  |       <%
  |          }
  |       %>
  |    </li>
  |    <%
  |       }
  | 
  |    %>
  | </ul>
  | 
  | 

In my navigation.java is used


  | import javax.portlet.PortletException;
  | import java.io.IOException;
  | import javax.portlet.PortletMode;
  | import javax.portlet.PortletRequestDispatcher;
  | import javax.portlet.UnavailableException;
  | import javax.portlet.filter.FilterChain;
  | import org.jboss.portlet.JBossActionRequest;
  | import org.jboss.portlet.JBossActionResponse;
  | import org.jboss.portlet.JBossPortlet;
  | import org.jboss.portlet.JBossRenderRequest;
  | import org.jboss.portlet.JBossRenderResponse;
  | import org.jboss.portlet.filter.JBossPortletFilter;
  | 
  | /**
  |  * navigation Portlet Class
  |  */
  | public class navigation extends JBossPortlet {
  | 
  |   private static final String VIEW = "/WEB-INF/jsp/navigation_view.jsp";
  | 
  | 
  |     @Override
  |     public void processAction(JBossActionRequest request, JBossActionResponse response) throws PortletException, IOException {
  | 
  |        response.setPortletMode(PortletMode.VIEW);
  |         return;
  |     }
  | 
  |     @Override
  |     protected void doView(JBossRenderRequest request, JBossRenderResponse response) throws PortletException, IOException, UnavailableException {
  | 
  |         response.setContentType("text/html");
  |         PortletRequestDispatcher prd = getPortletContext().getRequestDispatcher(VIEW);
  |         prd.include(request, response);
  |     }
  | }
  | 

Deploying of the Portlet works great with no errors, if I start teh Portlet I get an exception


  | 15:41:44,394 ERROR  The portlet threw an exception
  | javax.portlet.PortletException: org.apache.jasper.JasperException: An exception occurred processing JSP page /WEB-INF/jsp/navigation_view.jsp at line 12
  | 
  | 9:    PortalNode portal = root;
  | 10:    PortalNode mainPage = portal;
  | 11: 
  | 12:    while (portal.getType() != PortalNode.TYPE_PORTAL)
  | 13:    {
  | 14:       mainPage = portal;
  | 15:       portal = portal.getParent();
  | 
  | 

Where is my fault ? Is anyone able to help me ?

Thanks,
Stephan

View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4217508#4217508

Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4217508



More information about the jboss-user mailing list