открыть новое окно в a4j: commandButton - PullRequest
6 голосов
/ 24 января 2011

Используя A4J, Richfaces в веб-приложении, мне нужно открыть новое окно браузера, когда пользователь нажимает <a4j:commandButton>.

Я думаю, мне придется использовать window.open(URL, ...).Где я должен положить это?

Мой <a4j:commandButton> выглядит так:

<a4j:commandButton id="elementDetailsButton"
    onclick="if (!confirm('Are you sure? Unsaved data will be lost')) { return false; }"
    action="#{myBean.elementDetailsAction}"
    value="Element Details">
    <a4j:actionparam name="elementDetailsString"
        value="getElementDetails()"
        assignTo="#{myBean.elementDetails}" noEscape="true">
    </a4j:actionparam>
</a4j:commandButton>

Ответы [ 2 ]

5 голосов
/ 24 января 2011

Вы можете подтвердить window.open, а не return false

<a4j:commandButton id="elementDetailsButton"
    onclick="if (confirm('Are you sure? Unsaved data will be lost')) { window.open(URL, ...) } else { return false }" (...) />

«Остальное» необязательно, может быть и не нужно.

Или вы можете изменить цель формы.Я не очень хорошо помню, правильный ли это синтаксис ...

<a4j:commandButton id="elementDetailsButton" onclick="this.form.taget='_blank'" (...) />

... или что-то в этом роде.

Изменение целевого объекта создаст вам хорошую проблему.Оставшаяся часть приложения будет нацелена на новое окно. Чтобы решить эту проблему, я сделал <h:commandLink/>, чтобы закрыть окно (modalPanel) и сбросить цель формы.

Я использовал это (целевой трюк) для открытия .pdf отчетов внутри <rich:modalPanel/> с использованием <iframe/>.

Но я не уверен, что изменение цели будет полезно для вашей проблемы ..

2 голосов
/ 27 января 2011

Как я вижу из вашей командной кнопки, вы хотите запросить подтверждение, выполнить действие и открыть новое окно, верно? Я не совсем уверен, может ли кнопка обрабатывать так много действий, но вы всегда можете попытаться использовать конфигурацию onload и назначить действие странице, которую вы хотите загрузить, и позволить этой кнопке обрабатывать как подтверждение, так и действие открытия окна так же, как Предложил Ренан.

...