【发布时间】:2012-05-01 10:00:47
【问题描述】:
我有一个 JSF 数据表,其中一列包含艺术家列表以及一个 commandLink,我希望在您单击链接时显示或隐藏特定艺术家制作的专辑。
我刚刚开始了解 JSF,我想知道在单击链接时,让 commandLink 的值在“显示专辑”和“隐藏专辑”之间切换的最佳做法是什么?不使用javascript是否可以做到这一点?
谢谢
【问题讨论】:
标签: jsf components conditional-rendering
我有一个 JSF 数据表,其中一列包含艺术家列表以及一个 commandLink,我希望在您单击链接时显示或隐藏特定艺术家制作的专辑。
我刚刚开始了解 JSF,我想知道在单击链接时,让 commandLink 的值在“显示专辑”和“隐藏专辑”之间切换的最佳做法是什么?不使用javascript是否可以做到这一点?
谢谢
【问题讨论】:
标签: jsf components conditional-rendering
您可以在 EL 中使用条件运算符 ?: 来实现这一点。如果布尔表达式的计算结果为true,则执行第一条语句,否则执行第二条语句。
<h:commandLink ... value="#{bean.showAlbums ? 'Show' : 'Hide'} Albums" />
您甚至可以使用与显示/隐藏实际专辑相同的条件。
【讨论】:
value="#{artist.showAlbums ? 'Show' : 'Hide'} Albums"
value="#{controller.myBoolVal ? 'msg.yes' : 'msg.no'}" 不起作用。
你的链接
<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";
}
}
【讨论】: