[英]h:commandButton with an action and then page-navigation in JSF?
是否可以有一個commandButton執行某個后備bean的方法,然后又導航到另一個頁面?
我知道我可以在commandButton調用的方法中返回String,但是該方法也用在目標頁面上,這意味着它通常是在同一頁面上調用的。 因此,對於來自同一頁面的呼叫,重定向是不必要的,我想避免這種情況。
我現在想到的選擇是:
我有什么選擇嗎? 有什么方法可以告訴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觸發該action
, actionListener
再觸發該action
。 希望能幫助到你。
更新:
由於沒有其他想法,您可以在有或沒有重定向的情況下使用commandButton
。
<h:commandButton value="Click" action="{bean.method}"/>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.