2012-09-05 59 views
0

我有一個jsf模板頁面。在這個模板中,我想使用帶有參數的組件。其實我想重複收集。這個集合應該由特定頁面的參數決定。參數名稱爲selectedMenu。我如何在我的bean中使用它?帶參數的jsf2模板組件

<div id="notes"> 
        selectedMenu: #{selectedMenu} 
        <h:form> 
         <h:inputHidden value="#{notatkaController.searchForm.kategoria}"> 
          <f:param value="#{selectedMenu}" /> 
         </h:inputHidden> 
         <ui:repeat value="#{notatkaController.items}" var="item" varStatus="iter"> 
          <f:param value="#{selectedMenu}" /> 
          <p class="q-title"><strong><h:outputText value="#{item.ntaData}" /></strong></p> 
          <p class="answer"><h:outputText value="#{item.ntaDane}" escape="false" /></p>          
         </ui:repeat> 
         <span>Moje notatki</span> 
         <textarea>Tu wpisz treść swojej notatki</textarea> 
         <span>[+] dodaj notatkę</span> 
        </h:form> 
       </div> 

我的豆:

@ManagedBean(name = "notatkaController") 
@ViewScoped 
public class NotatkaController extends AbstractController<Notatka> implements Serializable { 

@EJB 
private pl.alfaprojekt.model.session.NotatkaFacade ejbFacade; 
private NotatkaSearchForm searchForm; 

public DataModel getItems() { 
    if (items == null) 
     items = getPagination().createPageDataModel(); 
    return items; 
} 

public PaginationHelper getPagination() { 
    if (pagination == null) { 
     if (paginationSize == null) 
      paginationSize = 10; 
     pagination = new PaginationHelper(paginationSize) { 

      @Override 
      public int getItemsCount() { 
       return getFacade().countByParam(getSearchForm()); 
      } 

      @Override 
      public DataModel createPageDataModel() { 
       if (rapId == null) 
        return new ListDataModel(getFacade().findRangeByParam(getSearchForm(), new int[]{getPageFirstItem(), getPageFirstItem() + getPageSize()})); 
       else { 
        Long uzyId = SessionUtil.getUser().getUzyId(); 
        return new ListDataModel(convertToRaportWierszList(getFacade().findRangeByParam(getSearchForm(), new int[]{getPageFirstItem(), getPageFirstItem() + getPageSize()}), uzyId)); 
       } 
      } 
     }; 
    } 
    return pagination; 
} 

}

回答

0

我不知道我的理解這個問題,但我回答這個問題是這樣的:

我要動態顯示的東西。我想告訴它什麼時候頁面被訪問顯示。

查看:

然後,您可以使用以下方法:

<f:event listener="#{myBean.myMethod}" type="preRenderView" /> 

豆:

public void myMethod(ComponentSystemEvent event){ 
//your logic here 
} 

隨着參數:

<f:metadata> 
    <f:event listener="#{myBean.myMethod}" type="preRenderView" id="fevent"/> 
    <f:attribute name="myParam" value="#{mySecondBean.param)" /> 
</f:metadata> 

而且

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