2016-11-21 44 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

不客氣。 –