有条件地切换基于布尔值的组件属性值

问题描述:

我有一个JSF数据表,其中一列包含艺术家列表以及每个我想要显示或隐藏特定艺术家拥有的相册的commandLink点击链接时产生。有条件地切换基于布尔值的组件属性值

我刚刚开始学习JSF,我想知道在单击链接时如何让commandLink的值在“显示相册”和“隐藏相册”之间切换,最佳做法是什么?有没有可能做到这一点,而不使用JavaScript?

感谢

可以使用条件运算符?:在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

您的链接

<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