13

setPropertyActionListenervs attributevs 和有什么不一样param

什么时候使用setPropertyActionListener

4

1 回答 1

28

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:paramf:attribute. 此外,重要的是要知道 with f:paramyou 可以传递String值,而 with f:attributeyou 可以传递对象。

于 2013-01-23T08:01:48.960 回答