6

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

2 回答 2

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 }" (...) />

“Else”是可选的,也许不是必需的。

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

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

...或类似的东西。

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

<rich:modalPanel/>我正在使用这个(目标技巧)在使用.pdf 的内部打开 .pdf 报告<iframe/>

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

于 2011-01-24T18:01:41.137 回答
2

正如我从您的命令按钮中看到的那样,您想要求确认,执行操作并打开一个新窗口,对吗?我不完全确定一个按钮是否可以处理这么多的操作,但您总是可以尝试使用 onload 配置并将操作分配给您要加载的页面,并允许commanbutton 处理确认和打开窗口的操作,就像雷南提议道。

于 2011-01-27T16:05:23.720 回答