Domanda

Sono curioso di sapere se qualcuno sa se è possibile che un singolo portlet contenga più pagine, diciamo pagine JSP. Inoltre è possibile collegarsi a queste diverse pagine all'interno dello stesso portlet?

Ad esempio. Diciamo che ho un unico portlet. E in questo portlet voglio che la vista iniziale sia una pagina JSP con solo 5 collegamenti su di essa a 5 diverse pagine JSP. E quando un utente fa clic su uno di questi 5 collegamenti, carica la pagina JSP appropriata nel portlet.

L'obiettivo finale sarebbe fondamentalmente un piccolo mini sito Web tutto contenuto in un portlet.

Ora capisco che questo potrebbe non essere il miglior uso di un portlet, ma per il bene di un progetto a cui sto lavorando, vorrei comunque sapere se è possibile.

Grazie!

È stato utile?

Soluzione

Certo, un portlet può contenere più di un JSP.

È possibile visualizzare qualsiasi JSP desiderato tramite PortletRequestDispatcher in doView (o doHelp o doEdit ):

protected void doView(RenderRequest req, RenderResponse resp)
       throws PortletException, IOException, UnavailableException {
   resp.setContentType("text/html"); 
   String myview = req.getParameter("myview");
   String view = "/WEB-INF/jsp/" + (myview==null ? "bar" : myview) + ".jsp";
   PortletRequestDispatcher dispatcher = 
                                 getPortletContext().getRequestDispatcher(view);
   dispatcher.include(req, resp);
}

È possibile utilizzare un parametro per impostare la vista. Nel JSP con i collegamenti, è necessario utilizzare l'API Portlet per creare / codificare i collegamenti al Portlet. Ad esempio:

<portlet:renderURL>
  <portlet:param name="myview" value="foo"/>
</portlet:renderURL>

(Non ho tenuto il passo con JSR286 / Portlet 2.0 - questa roba dovrebbe funzionare con JSR168 / Portlet 1.0 - quindi vale la pena controllare la nuova API se la stai usando.)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top