В моем приложении xpages я хочу перенаправить пользователя в зависимости от роли.Однако вычисленный URL-адрес приводит к уродливому URL-адресу с% 5C в пути
var baseURL = context.getUrl().toString().split(facesContext.getExternalContext().getRequest().getRequestURI())[0]; var path =escape(database.getFilePath()); if (context.getUser().getRoles().contains("[Administrator]") || context.getUser().getRoles().contains("[SuperAdmin]") || context.getUser().getRoles().contains("[Ledamot]")){ facesContext.getExternalContext().redirect(baseURL + slash + path + "/employees.xsp?sorting=asc") }else{ context.redirectToPage("index.xsp") }
Это приводит к чему-то вроде: https://server/directory%5cdatabase.nsf/employees.xsp?sorting=asc
Поскольку вы перенаправляете в одну и ту же базу данных, вы можете рассчитать префикс url (хост + путь к базе данных) следующим образом:
context.getUrl().toString().split(view.getPageName())[0]
% 5c - это обратная косая черта, поэтому вам нужно заменить обратную косую черту в пути к файлу прямой косой чертой.Так что-то вроде этого должно работать:
database.getFilePath().replace("\\", "/");