2011-01-24 48 views
6

Sử dụng A4J, Richfaces trong ứng dụng web, tôi cần mở cửa sổ trình duyệt mới khi người dùng nhấp vào <a4j:commandButton>.mở cửa sổ mới bằng a4j: commandButton

Tôi nghĩ mình sẽ phải sử dụng window.open(URL, ...). Tôi nên đặt nó ở đâu?

<a4j:commandButton> vẻ của tôi như thế này:

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

Trả lời

5

Bạn có thể xác nhận window.open và không phải là return false

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

"khác" là không bắt buộc, có lẽ không cần thiết.

Hoặc bạn có thể thay đổi mục tiêu hình thức .. Tôi không nhớ rất tốt nếu cú ​​pháp chính xác của nó ...

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

... hoặc một cái gì đó như thế.

Thay đổi mục tiêu biểu mẫu sẽ cung cấp cho bạn một vấn đề tốt đẹp. Phần còn lại của ứng dụng bạn sẽ nhắm mục tiêu cửa sổ mới .. Để giải quyết vấn đề này, tôi đã thực hiện một <h:commandLink/> để đóng cửa sổ (modalPanel) và đặt lại mục tiêu biểu mẫu.

Tôi đã sử dụng tính năng này (mẹo mục tiêu) để mở báo cáo .pdf bên trong một <rich:modalPanel/> bằng cách sử dụng <iframe/>.

Nhưng tôi không chắc chắn nếu thay đổi mục tiêu biểu mẫu sẽ có ích cho vấn đề của bạn ..

2

Như tôi đã có thể nhìn thấy từ CommandButton của bạn, bạn muốn yêu cầu xác nhận, thực hiện một hành động và mở một cửa sổ mới đúng ? Tôi không hoàn toàn chắc chắn nếu một nút có thể xử lý nhiều hành động nhưng bạn luôn có thể thử sử dụng cấu hình tải và gán một hành động cho trang bạn muốn tải và cho phép nút dấu phẩy xử lý cả xác nhận và hành động mở cửa sổ giống như Renan gợi ý.

Các vấn đề liên quan