2012-04-19 95 views
2

我有一個JSF數據表,其中一列包含藝術家列表以及每個我想要顯示或隱藏特定藝術家擁有的相冊的commandLink點擊鏈接時產生。有條件地切換基於布爾值的組件屬性值

我剛剛開始學習JSF,我想知道在單擊鏈接時如何讓commandLink的值在「顯示相冊」和「隱藏相冊」之間切換,最佳做法是什麼?有沒有可能做到這一點,而不使用JavaScript?

感謝

回答

4

可以使用條件運算符?:在EL爲。如果布爾表達式的計算結果爲true,則將執行第一條語句,否則執行第二條語句。

<h:commandLink ... value="#{bean.showAlbums ? 'Show' : 'Hide'} Albums" /> 

甚至可以使用與使用相同的條件顯示/隱藏實際相冊。

+0

感謝您的回答! – nivis 2012-04-20 07:28:55

+0

當我嘗試這個時,它會更新數據表中的所有鏈接,而不僅僅是我點擊的鏈接。這個想法是,當你點擊一個鏈接時,只有該鏈接應該將值更改爲「隱藏相冊」,並且只應該顯示該特定藝術家的相冊。 – nivis 2012-04-20 07:37:03

+0

然後你應該讓條件依賴於當前行,而不是父bean,否則它顯然會應用於所有行。例如。 'value =「#{artist.showAlbums?'顯示':'隱藏'}相冊」' – BalusC 2012-04-20 12:14:57

0

您的鏈接

<a4j:commandLink value="#{myBean.value}" action="#{myBean.toggleValue}" reRender="myLink" id="myLink"/> 

你豆

import javax.faces.bean.ManagedBean; 
import javax.faces.bean.ViewScoped; 

@ManagedBean(name="myBean") 
@ViewScoped 
public class MyBean { 
    boolean show = true; 

    public void toggleValue() { 
    this.show = !this.show; 
    } 

    public String getValue() { 
    return this.show ? "Show" : "Hide"; 
    } 
} 
+0

謝謝你的回答!當我嘗試它時,它會更新數據表中的所有鏈接,而不僅僅是我單擊的鏈接。這個想法是,當你點擊一個鏈接時,只有該鏈接應該將值更改爲「隱藏相冊」,並且只應該顯示該特定藝術家的相冊。 – nivis 2012-04-20 07:37:42