}
private String generateUrl(FacesContext facesContext, AbstractUICommandBase component) {
String url;
Application application = facesContext.getApplication();
ViewHandler viewHandler = application.getViewHandler();
ExternalContext externalContext = facesContext.getExternalContext();
if (component.getResource() != null) {
boolean jsfResource = component.isJsfResource();
url = ResourceManagerUtils.getPageWithoutContextPath(facesContext, component.getResource());
if (url != null) {
if (jsfResource) {
url = viewHandler.getActionURL(facesContext, url);
url = externalContext.encodeActionURL(url);
} else {
url = viewHandler.getResourceURL(facesContext, url);
url = externalContext.encodeResourceURL(url);
}
} else {
url = "";
}
} else if (component.getLink() != null) {
String link = component.getLink();
if (link.startsWith("/")) { // internal absolute link
url = viewHandler.getActionURL(facesContext, link);
url = externalContext.encodeActionURL(url);
} else if (link.contains(":")) { // external link
url = link;
} else { // internal relative link
url = externalContext.encodeResourceURL(link);