Перенаправление/вперед из сервлета с помощью PrettyFaces

я использую PrettyFaces 3.3.0, и я хочу сделать пользовательское перенаправление и переадресацию с сервлета

я нашел следующий код в их документации:

public class CustomRedirector 
{
    public void redirect(HttpServletRequest request, HttpServletResponse response, 
                            String mappingId, Map<String, String[]>params)
    {
        PrettyContext context = PrettyContext.getCurrentInstance(request);
        PrettyURLBuilder builder = new PrettyURLBuilder();

        URLMapping mapping = context.getConfig().getMappingById(mappingId);
        String targetURL = builder.build(mapping, params);

        targetURL = response.encodeRedirectURL(targetURL);
        response.sendRedirect(targetURL);
    }       
}

и мне было интересно, как вызвать метод перенаправления из сервлета, каким будет идентификатор отображения (URI запроса?) и каким будет значение Map<String, String[]>params, мне нужен небольшой пример вызова вышеуказанного метода из сервлета?

и как сделать переадресацию с сервлета с красивыми лицами тоже, пожалуйста, посоветуйте.


person Mahmoud Saleh    schedule 02.11.2011    source источник


Ответы (1)


«String mappingId» — это идентификатор сопоставления URL-адресов в вашей конфигурации PrettyFaces. Каждое сопоставление URL-адресов должно иметь идентификатор (либо в XML, либо в конфигурации аннотаций).

Параметры карты — это список параметров в парах «имя-значение», которые используются для создания исходящей ссылки на основе шаблона сопоставления URL-адресов, указанного идентификатором.

Например:

<url-mapping id="foo">
    <pattern value="/#{cat}/#{item}" />
    <view-id value="/bar.xhtml" />
</url-mapping>

Итак, вы бы назвали свой метод так:

Map<String, String[]> map = new HashMap<>();
map.put("cat", "blah");
map.put("item", "45");
new CustomRedirector.redirect(request, response, "foo", map);

И вы будете перенаправлены на:

/blah/45
person Lincoln    schedule 25.11.2011