2014-04-23 38 views
1

禁用頁面組件我想禁用我的網頁一些菜單項:JSF。如何通過bean方法

<p:menuitem value="Edit" update=":formedit:viewDisplayEdit" icon="ui-icon-document" oncomplete=... disabled="#{bean.ask(1)}"/> 

而且在我的備份豆:

public boolean ask(int id) 
{ 
Ask the database here for privilege "id" and return true if logged user have privilege "id" 
else return false 
} 

當然,我想檢查一下只有一次 - 在頁面呈現期間。 在這個例子中,不管方法的結果是「ask」,menuitem總是被啓用。 我知道我可以設置布爾變量xmls代碼(#{bean.ask1}),但我想要一個通用的解決方案。 你能幫忙嗎?

+0

它始終處於啓用狀態,因爲根據您禁用的代碼將始終爲false。您希望它禁用和啓用的條件是什麼? – jpr

+0

我在一些頁面上有大約20-30種不同的菜單項,按鈕等。我從數據庫中讀取我的權限,並希望在頁面上啓用或禁用某些活動。所以,我的問號函數的「id」參數是特權的「id」。在這裏「//在這裏我檢查id和返回結果」應該是:「詢問我的數據庫是否爲登錄用戶的ID特權並返回結果是true還是false」。 – user3566245

+0

愚蠢的錯誤!應該有否定之前:disabled =「#{!bean.ask(1)}」 – user3566245

回答

0

通過get和set方法在bean中請求一個私有變量。

private boolean ask = true; 

public boolean isAsk(){ 
    return ask; 
} 

public void setAsk(boolean ask){ 
    this.ask = ask; 
} 

現在您要啓用或禁用菜單項,設置或在綠豆不同的方法正確地復位問變量任何條件。

if (condition = true){ 
    setAsk(false); 
} 
+0

是的,我知道。但是我有時在每個頁面上有20個不同的動作,我不能在每個bean中創建這麼多的變量。我需要我的bean超類中的通用方法。 – user3566245