Как показать главную страницу на URL / клиенты и страницу с подробностями на URL / клиенты? Id=4
Рассмотрим этот пример веб-сайта JSP. Это позволяет просматривать клиентов в режиме мастер / деталь. А именно, когда пользователь предоставляет ссылку "/ клиенты", отображается главное представление. Когда пользователь предоставляет ссылку "/ Customers? Id=4", то отображается подробное представление для конкретного. Технически это достигается путем регистрации ссылки "/ Customers" в web.xml и сопоставления ее с сервлетом ClientsController.java, который действует как контроллер MVC. Это в основном 1) проверяет, установлен ли атрибут "id" или нет 2) соответственно устанавливает атрибут HttpServletRequest (полный список сведений о клиенте или конкретном клиенте и 3) перенаправляет на страницы master.jsp или details.jsp соответствующим образом, используя getRequestDispatcher() механизм. Теперь, как преобразовать эту вещь в JSF2, сохранив ту же самую структуру URL-адресов и разделив мастер-страницы и страницы деталей Facelets?
1 ответ
Что касается устранения расширения в URL, перейдите к этому вопросу: настройте FacesServlet
Что касается главного и подробного представления в зависимости от параметра запроса, просто используйте <f:viewParam>
установить (и преобразовать) параметр запроса как свойство компонента, а затем использовать rendered
атрибут для условного отображения желаемого содержимого в зависимости от того, является ли свойство компонента пустым.
<f:metadata>
<f:viewParam name="id" value="#{bean.customer}" />
<f:metadata>
<ui:fragment rendered="#{empty bean.customer}">
<ui:include src="/WEB-INF/includes/customer-master.xhtml" />
</ui:fragment>
<ui:fragment rendered="#{not empty bean.customer}">
<ui:include src="/WEB-INF/includes/customer-detail.xhtml" />
</ui:fragment>
Чтобы пережить постбэки, убедитесь, что #{bean}
является @ViewScoped
,