Páginas múltiplas dentro de um Portlet
Pergunta
Estou curioso se alguém sabe se é possível para um único portlet para conter várias páginas, digamos páginas JSP. Além disso é possível link para essas páginas diferentes dentro do mesmo portlet?
Por exemplo. Digamos que eu tenho um único portlet. E neste portlet eu quero a exibição inicial de ser uma página JSP com apenas 5 links sobre ele a 5 páginas JSP diferentes. E quando um usuário clicou em um desses 5 links, seria carregar a página JSP apropriada para o portlet.
O objetivo final seria basicamente um pouco de mini-site todos contidos dentro de um portlet.
Agora, eu entendo que isso pode não ser o melhor uso de um portlet, mas por causa de um projeto que estou trabalhando, eu ainda gostaria de saber se é possível.
Obrigado!
Solução
Claro, um portlet pode conter mais de uma JSP.
Você pode exibir qualquer JSP que você quer através da PortletRequestDispatcher em sua doView (ou doHelp
ou doEdit
) método:
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);
}
Você pode usar um parâmetro para definir o ponto de vista. No JSP com os links, você precisa usar o Portlet API para criar / codificar os links para o Portlet. Por exemplo:
<portlet:renderURL>
<portlet:param name="myview" value="foo"/>
</portlet:renderURL>
(Eu realmente não tenho mantido a par de JSR286 / Portlet 2.0 - essas coisas deve trabalhar com JSR168 / Portlet 1.0 -. Por isso vale a pena conferir a nova API se você estiver usando-o)