2016-11-21 76 views
0

我preRenderView类型的下列事件加载页面之前执行的方法:参数传递给F:事件侦听器

<f:event listener="#{aprobacionFlujoController.preRender}" type="preRenderView" /> 

我需要一个参数发送到听众,这是最好的方法做到这一点,探针如下:

<f:metadata> 
    <f:event listener="#{aprobacionFlujoController.preRender}" type="preRenderView" /> 
    <f:attribute name="myid" value="true" /> 
</f:metadata> 

控制器

public void retrieveData(ComponentSystemEvent event) { 
    String id = (String) event.getComponent().getAttributes().get("myid"); 
} 

但是的getAttributes()方法返回EMP TY。

回答

0

那么,如果你使用的是JSF 2.2,那么你可以使用<f:viewAction />来执行任务之前页面呈现,因为你试图实现从我可以告诉的是从数据库检索数据显示,换句话说有一个动态的网页。

在你的Facelets页面:

<h:head> 
    <f:metadata> 
    <f:viewParam name="parameter_id" value="#{yourbean.searchId}" /> 
    <f:viewAction action="#{yourbean.getInfo}" /> 
    </f:metadata> 
</h:head> 

什么viewParam确实是设置在value属性转移财产;这个属性来作为HTTP GET请求参数,如:

yourwebsite.com/yourpage.xhtml?parameter_id=parameter_value 

在你管理Baen你只是有使用属性进行数据提取的方法:

@NAmed 
@your_scope 
public class YourBean implements Serializable{ 

    private String searchId; 

    public void getInfo(){ 
    yourService.getData(searchId); 
    // ... the rest .... 
    } 

// setter & getter for searchId 
} 

如果你想按照你的方式做,因为你正在使用JSF 2.1 | 2.0然后也许试试这个来获取请求参数:

String parameter = ((Map<String,String>)Facescontext.getExternalContext().getRequestParameterMap()).get("your_parameter_name"); 
+0

感谢您的回答 – juandej18

+0

不客气。 –