在a4j中打开一个新窗口:commandButton

Dan*_*nga 6 javascript ajax richfaces ajax4jsf

在Web应用程序中使用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>
Run Code Online (Sandbox Code Playgroud)

Ren*_*nan 5

你可以确认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 }" (...) />
Run Code Online (Sandbox Code Playgroud)

"Else"是可选的,可能不是必需的.

或者您可以更改表单目标..我不记得很好,如果它的语法正确...

<a4j:commandButton id="elementDetailsButton" onclick="this.form.taget='_blank'" (...) />
Run Code Online (Sandbox Code Playgroud)

...或类似的东西.

更改表单目标会给你一个很好的问题.你应用程序的其余部分将以新窗口为目标.为了解决这个问题,我做了一个<h:commandLink/>关闭窗口(modalPanel)并重置表单目标.

我用这个(目标伎俩),打开里面的.pdf报告<rich:modalPanel/>使用<iframe/>.

但我不确定更改表单目标是否对您的问题有用..