簡體   English   中英

h:commandButton,然后在JSF中執行操作並進行頁面導航?

[英]h:commandButton with an action and then page-navigation in JSF?

是否可以有一個commandButton執行某個后備bean的方法,然后又導航到另一個頁面?

我知道我可以在commandButton調用的方法中返回String,但是該方法也用在目標頁面上,這意味着它通常是在同一頁面上調用的。 因此,對於來自同一頁面的呼叫,重定向是不必要的,我想避免這種情況。

我現在想到的選擇是:

  • 為該方法的“遠程”調用創建一個單獨的方法,該方法具有相同的邏輯並且還重定向到頁面
  • 使用其他的h:button並使用JavaScript,這樣,如果按下commandButton,則同時按下h:button(可能是不好的做法)

我有什么選擇嗎? 有什么方法可以告訴commandButton自己應該導航到某個地方,還是必須在后備豆中實現呢?

您的標題和第一句話很“危險”,因為兩者都不是話題,答案是肯定的,而您在第二段中已經描述了自己(=答案)。

真正的問題進一步有效地詢問了條件導航。 但是首先讓我指出,如果您只是確保不對bean進行實際工作( 您不應該這樣做,那么您對兩種方法的解決方案也沒有錯。

現在,條件導航本身並不困難

我認為您已經知道的所有基本JSF,這只需要做某事即可

所以問題仍然存在

依次可用於在if / else中返回null或其他新頁面。

第1頁:

<h:commandButton action="#{mybean.action(true))" />

第2頁:

<h:commandButton action="#{mybean.action(false))" />

豆角,扁豆:

public String action(boolean navigate) {

    doWork();

    if (navigate) {
        return "page2.xhtml?faces-redirect=true";
    } else {
        return null;
    }

而且,如果您願意,甚至可以將null或頁面名稱作為參數傳遞給方法調用。

實現對操作的源頁面的檢測具有以下優點:在UI中,您不需要任何有關導航的知識,您總是調用相同的方法而沒有任何參數,並且要在此操作上使用的每個新頁面都導航至正確的頁面,而開發人員無需任何知識。

因此,請選擇。

我不確定自己是否正確,但是您可以執行以下操作:

<h:commandButton value="Click" action="otherPage.xhtml?faces-redirect=true">
     <f:actionListener binding="#{bean.method}" />
</h:commandButton>

請記住,將首先從commandButton觸發該actionactionListener再觸發該action 希望能幫助到你。

更新:

由於沒有其他想法,您可以在有或沒有重定向的情況下使用commandButton

<h:commandButton value="Click" action="{bean.method}"/>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM