JSF通过超链接传递参数到控制层

JSF通过超链接传输数据到控制层可以分为三个步骤:

  1.首先将数据加入到超链接中。通过<h:link>标签加入一个超链接,然后加入<f:param>标签加入参数。示例代码如下:

1 <h:link outcome="next.xhtml">
2     跳转
3     <f:param name="id" value="2"/>
4 </h:link>

其中name和value会出现在url上,组成类似于"next.xhtml?id=2"这样的key-value形式。

  2.跳转后的页面接收数据,next.html可以这样写,示例代码如下:

1 <f:metadata> 
2     <f:viewParam name="id" value="#{bean.id}" />
3     <f:event listener="#{bean.init}" type="javax.faces.event.PreRenderViewEvent"></f:event>
4 </f:metadata>

  这段代码写在html页面命名空间之后,其中name和value和超链接一样的关联起来,value对应bean里面的一个属性。<f:event>为页面初始化参数,listener对应要初始化的方法,type是事件类型,例子中的是页面渲染之前的事件类型。具体类型API提到以下几种类型:

value for "type" tag attribute        Type of event sent to listener method
preRenderComponent                    javax.faces.event.PreRenderComponentEvent
preRenderView                         javax.faces.event.PreRenderViewEvent 
postAddToView                         javax.faces.event.PostAddToViewEvent 
preValidate                           javax.faces.event.PreValidateEvent 
postValidate                          javax.faces.event.PostValidateEvent

  3.页面跳转之后,html中也已经接收到,最终要传递到控制层中的,控制层中接收很简单,只需要对应页面中<f:viewParam>中value的数据就行,在bean中声明该数据,并生成get和set方法即可。此处省略bean中的代码了。

  总结起来就这3步,控制层中即可获取到超链接中传递的参数了。

原文地址:https://www.cnblogs.com/bigbang92/p/jsf_link-param.html