setPropertyActionListener
vs attribute
vs 和有什么不一样param
?
什么时候使用setPropertyActionListener
?
1. f:setPropertyActionListener:
使用此标签,您可以直接在您的支持 bean 中设置属性。例子:
xhtml:
<h:commandButton action="page.xhtml" value="OK">
<f:setPropertyActionListener target="#{myBean.name}" value="myname"/>
</h:commandButton>
后备豆:
@ManagedBean
@SessionScoped
public class MyBean{
public String name;
public void setName(String name) {
this.name= name;
}
}
这会将name
支持 bean 的属性设置为值myname。
2. f:参数:
这个标签简单地设置了请求参数。例子:
xhtml:
<h:commandButton action="page.xhtml">
<f:param name="myparam" value="myvalue" />
</h:commandButton>
因此您可以在支持 bean 中获取此参数:
FacesContext.getExternalContext().getRequestParameterMap().get("myparam")
3. f:属性:
使用此标记,您可以传递属性,以便您可以从支持 bean 的动作侦听器方法中获取该属性。
xhtml:
<h:commandButton action="page.xhtml" actionListener="#{myBean.doSomething}">
<f:attribute name="myattribute" value="myvalue" />
</h:commandButton>
因此您可以从动作侦听器方法中获取此属性:
public void doSomething(ActionEvent event){
String myattr = (String)event.getComponent().getAttributes().get("myattribute");
}
f:setPropertyActionListener
每当您想设置支持 bean 的属性时,您都应该使用它。如果要将参数传递给支持 bean,请考虑f:param
和f:attribute
. 此外,重要的是要知道 with f:param
you 可以传递String
值,而 with f:attribute
you 可以传递对象。