簡體   English   中英

將參數傳遞給PrimeFaces星級評定組件?

[英]Passing parameters to PrimeFaces Star Rating component?

我正在嘗試利用PrimeFaces的星級評定組件。 但是,它不允許您傳遞參數。 這使我無法進行查找以從數據庫中獲取要評估的實體。 我已經嘗試過類似的方法,但是沒有成功:

<p:rating value="#{myAction.rating}">
   <f:param name="myObjID" value="#{myObj.id}" />
</p:rating>

還有另一種方法可以將參數傳遞到動作類中嗎? 我缺少什么可以讓我得到想要的行為的東西嗎? 謝謝你的幫助!

我解決了如下問題:

<h:form>
    <p:rating id="rate" value="#{userHomeControllerBean.rating}">
        <f:param name="contentId" value="#{sharedcontent.content.id}" />
        <p:ajax event="rate" listener="#{userHomeControllerBean.onrate}" update="rate" />
        <p:ajax event="cancel" listener="#{userHomeControllerBean.oncancel}" update="rate" />
    </p:rating>
</h:form>

在支持bean中,我可以按如下方式獲取contentId的值:

Map<String, String> params = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
int contentId = Integer.parseInt(params.get("contentId"));

我終於想出了怎么做...

<h:form>
   <p:rating value="#{myAction.rating}" />
   <input type="hidden" name="selectedObj" value="#{myObj.id}" />
</h:form>

然后,在我的動作類中,我可以通過執行以下操作來獲取selectedObj的值...

String selectedObjID = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("selectedObj");

小菜一碟!

f:viewParam使您可以將請求參數傳遞給bean屬性

<f:metadata>
  <f:viewParam name="myObjID" value="#{myObj.id}"/>
</f:metdata>

在頁面加載時,在MyObj Bean中設置了id

<p:rating rateListener="#{myObj.myRating}" />

由於您的bean具有ID,因此在調用rateListener方法時,可以使用ID將評級保存到數據庫中

您是否嘗試過在按鈕中使用f:setPropertyActionListener以便可以將所需的任何參數發送到操作類? 還是必須在p:rating內執行?

或者你可以做類似的事情

私人評級

// getter -setter

在操作bean中,您可以訪問此值((UIParameter)rating.getChildren()。get(0))。getValue();

如果是這樣,您可能做錯了,因為使用JSF時不應該這樣。

只是我的兩分錢

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM