public boolean redirect(final FacesContext context, final String action)
{
try
{
PrettyContext prettyContext = PrettyContext.getCurrentInstance(context);
PrettyConfig config = prettyContext.getConfig();
ExternalContext externalContext = context.getExternalContext();
String contextPath = prettyContext.getContextPath();
if (PrettyContext.PRETTY_PREFIX.equals(action) && prettyContext.isPrettyRequest())
{
URL url = prettyContext.getRequestURL();
QueryString query = prettyContext.getRequestQueryString();
String target = contextPath + url.encode().toURL() + query.toQueryString();
log.trace("Refreshing requested page [" + url + "]");
String redirectUrl = externalContext.encodeRedirectURL(target, null);
externalContext.redirect(redirectUrl);
return true;
}
else if (isPrettyNavigationCase(prettyContext, action))
{
UrlMapping mapping = config.getMappingById(action);
if (mapping != null)
{
String url = contextPath + builder.buildURL(mapping).encode()
+ builder.buildQueryString(mapping).toString();
log.trace("Redirecting to mappingId [" + mapping.getId() + "], [" + url + "]");