Несколько страниц внутри Одного портлета
Вопрос
Мне любопытно, знает ли кто-нибудь, возможно ли, чтобы один портлет содержал несколько страниц, скажем, JSP-страницы.Кроме того, возможно ли создать ссылку на эти разные страницы в одном портлете?
Например.Допустим, у меня есть один портлет.И в этом портлете я хочу, чтобы начальным представлением была страница JSP, на которой было всего 5 ссылок на 5 разных страниц JSP.И когда пользователь нажимал на одну из этих 5 ссылок, он загружал соответствующую страницу JSP в портлет.
Конечной целью, по сути, был бы небольшой мини-веб-сайт, весь содержащийся внутри портлета.
Теперь я понимаю, что это, возможно, не самое лучшее использование портлета, но ради проекта, над которым я работаю, я все же хотел бы знать, возможно ли это.
Спасибо!
Решение
Конечно, портлет может содержать более одного JSP.
Вы можете отобразить любой JSP, который вы хотите, с помощью PortletRequestDispatcher Запрос портала в вашем Просмотр голубя (или doHelp
или 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);
}
Вы могли бы использовать параметр чтобы установить вид.В JSP со ссылками вам нужно было бы использовать Portlet API для создания / кодирования ссылок на портлет.Например:
<portlet:renderURL>
<portlet:param name="myview" value="foo"/>
</portlet:renderURL>
(Я действительно не был в курсе JSR286 / Portlet 2.0 - этот материал должен работать с JSR168 / Portlet 1.0 - так что стоит проверить новый API, если вы его используете.)