您的位置:首页 > 运维架构

f:setPropertyActionListener标签

2013-09-04 16:31 423 查看
f:setPropertyActionListener标签
前面介绍过,f:param和f:attribute对于从UI向服务器传递信息是很方便的。但这些标签要求手工分别从请求参数或者组件特性中获得信息。

JSF1.2引入的f:setPropertyActionListener标签旨在避免提取操作。使用f:setProperty- ActionListener,JSF实现在backing bean中自动设置属性。下面是将它应用到国旗例子的代码:

<h:commandLink immediate="true" action="#{localeChanger.changeLocale}">
<f:setPropertyActionListener target="#{localeChanger.languageCode}"
value="de"/>
<h:graphicImage library= "images" name="de_flag.gif" style="border: 0px"/>
</h:commandLink>
<h:commandLink immediate="true" action="#{localeChanger.changeLocale}">
<f:setPropertyActionListener target="#{localeChanger.languageCode}"
value="en"/>
<h:graphicImage library= “images” name="en_flag.gif" style="border: 0px"/>
</h:commandLink>

在上面的JSP代码中,我们告诉JSF实现使用de或en来设置localeChanger bean的languageCode属性。下面是localeChanger bean的相应实现:

public class LocaleChanger {
private String languageCode;

public String changeLocale() {
FacesContext context = FacesContext.getCurrentInstance();
context.getViewRoot().setLocale(new Locale(languageCode));
return null;
}
public void setLanguageCode(String newValue) {
languageCode = newValue;
}
}

对于LocaleChanger的实现,我们提供了由JSF实现设置的languageCode只写属性。

在本例的上下文中,方法参数表面上是设置localeChanger bean的languageCode属性的最佳选择。它们易于实现和理解。f:setPropertyActionListener标签在JSF 2.0应用程序中将极少使用。但在其他上下文环境中,f:param和f:attribute也有它们自己的用武之地,可用来设置请求参数或组件特性。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: