В XAgent внутри XPages, как перенаправить в новое окно? - PullRequest
2 голосов
/ 26 января 2012

У меня есть XAgent с, кажется, работает нормально, но он открывает его в браузере CURRENT.Как мне открыть его в новом окне?

Этот код выполняется после RenderedResponse XPage.

Спасибо

// Track Downloads

// Setup XAgent stuff
var exCon = facesContext.getExternalContext(); 
var writer = facesContext.getResponseWriter();
var response = exCon.getResponse();

var fileLink = param.get("link");

// Insert Logging Code here

facesContext.getExternalContext().redirect(fileLink);

writer.endDocument()

Ответы [ 2 ]

6 голосов
/ 26 января 2012

Похоже, что вы пытаетесь отследить, когда кто-то нажимает на ссылку для скачивания.

Без отслеживания ссылка указала бы прямо на файл, в результате чего браузер инициировал загрузку, а пользователь остался натекущая страница.С отслеживанием XAgent пользователь переходит на другую страницу приложения, чтобы выполнить отслеживание и начать загрузку.

Вы можете добавить цель '_blank' к исходной ссылке, которая вызывает XAgent.,Это приведет к открытию нового окна / вкладки в браузере пользователей, но оно закроется после начала загрузки.

Однако использование этого метода отслеживания загрузок лишит пользователя сайта возможностииметь возможность щелкнуть правой кнопкой мыши по ссылке для скачивания и выполнить команду «Сохранить как».

0 голосов
/ 27 января 2012

Для ссылки на скачивание вы можете также рассмотреть возможность потоковой передачи файла с использованием OutputStream (может быть только один: Writer или Stream!) Для непосредственной передачи байтов файла для загрузки.Вам нужно установить тип MIME в заголовке.Если это не тот тип файлов, который может обрабатывать браузер, в любом случае появится диалоговое окно загрузки.Открытие нового окна на самом деле считается плохим стилем в наши дни.Если пользователь хочет новое окно, есть Ctrl + Click и Shift + Click -> решение, которое вы не должны принимать за него (которое открывает червей неграмотных пользователей браузера).

...