[英]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.