2011-01-24 12 views
6

Korzystając z formatu A4J, Richfaces w aplikacji internetowej, muszę otworzyć nowe okno przeglądarki, gdy użytkownik kliknie na <a4j:commandButton>.Otwórz nowe okno w a4j: commandButton

Myślę, że będę musiał użyć window.open(URL, ...). Gdzie powinienem to umieścić?

Moi <a4j:commandButton> wygląda następująco:

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

Odpowiedz

5

można potwierdzić window.open a nie "else" return false

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

jest opcjonalny, może nie jest to konieczne.

Albo można zmienić cel formularz .. nie pamiętam bardzo dobrze, jeśli jego poprawna składnia ...

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

... czy coś takiego.

Zmiana obiektu docelowego formularza spowoduje miły problem. Reszta aplikacji będzie dotyczyć nowego okna. Aby rozwiązać ten problem, zrobiłem <h:commandLink/>, aby zamknąć okno (modalPanel) i zresetować cel formularza.

Używałem tego (docelowy trik) do otwarcia .pdf raportów wewnątrz <rich:modalPanel/> przy użyciu <iframe/>.

Ale nie jestem pewien, czy zmienić cel forma będzie przydatna dla swojego problemu ..

2

Jak widzę z CommandButton chcesz zapytać o potwierdzenie, wykonanie czynności i otworzyć nowe okno prawo ? Nie jestem całkowicie pewien, czy przycisk może obsłużyć tak wiele akcji, ale zawsze możesz spróbować użyć konfiguracji onload i przypisać akcję do strony, którą chcesz załadować i pozwolić komendzie obsługiwać zarówno potwierdzenie, jak i działanie otwierania okna, tak jak Renan zasugerował.

Powiązane problemy