简体   繁体   中英

open a new window in a4j:commandButton

Using A4J, Richfaces in a web application, I need to open a new browser window when the user clicks on the <a4j:commandButton> .

I think I will have to use window.open(URL, ...) . Where should I put it?

My <a4j:commandButton> looks like this:

<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>

You can confirm the window.open and not the return false

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

"Else" is optional, maybe not necessary.

Or you can change the form target.. I dont remember very well if its the correct syntax...

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

...or something like that.

Changing the form target will give you a nice problem. The rest of you application will target the new window.. To solve this problem, I made a <h:commandLink/> to close the window (modalPanel) and reset the form target.

I was using this (the target trick) to open .pdf reports inside a <rich:modalPanel/> using a <iframe/> .

But I'm not sure if change the form target will be useful for your problem..

As I can see from your commandbutton you want to ask for confirmation, execute an action and open a new window right? I am not totally sure if a button can handle so many actions but you could always try to use onload configuration and assign an action to the page you want to load and allow the commanbutton to handle both confirmation and the action of opening the window just as Renan suggested.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM