JSF页面传参数到后台bean的四种方式

有四种方法可以把JSF页面的参数传到后台Bean:

  • Method expression (JSF 2.0)
  • f:param
  • f:attribute
  • f:setPropertyActionListener
我们一个一个的来看例子

1. Method expression

JSF 2.0后的版本允许你通过方法表达式(Method expression)的方式来传参数,像这样{bean.method(param)}.

JSF page…

<h:commandButton action="#{user.editAction(delete)}" />

Backing bean…

@ManagedBean(name="user")
@SessionScoped
public class UserBean{

	public String editAction(String id) {
	  //id = "delete"
	}

}

2. f:param

用f:param标签传参数,backing bean通过request parameter获取传过来的参数。

JSF page…

<h:commandButton action="#{user.editAction}">
	<f:param name="action" value="delete" />
</h:commandButton>

Backing bean…

@ManagedBean(name="user")
@SessionScoped
public class UserBean{

	public String editAction() {

	  Map<String,String> params =
                FacesContext.getExternalContext().getRequestParameterMap();
	  String action = params.get("action");
          //...

	}

}

 

3. f:atribute

用f:atribute标签,后台通过action listener获取.

JSF page…

<h:commandButton action="#{user.editAction}" actionListener="#{user.attrListener}">
	<f:attribute name="action" value="delete" />
</h:commandButton>

Backing bean…

@ManagedBean(name="user")
@SessionScoped
public class UserBean{

  String action;

  //action listener event
  public void attrListener(ActionEvent event){

	action = (String)event.getComponent().getAttributes().get("action");

  }

  public String editAction() {
	//...
  }	

}

4. f:setPropertyActionListener

 

通过f:setPropertyActionListener标签传参数,它会直接把参数值设置到backing bean对应的属性。

JSF page…

<h:commandButton action="#{user.editAction}" >
    <f:setPropertyActionListener target="#{user.action}" value="delete" />
</h:commandButton>

Backing bean…

@ManagedBean(name="user")
@SessionScoped
public class UserBean{

	public String action;

	public void setAction(String action) {
		this.action = action;
	}

	public String editAction() {
	   //now action property contains "delete"
	}	

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值