将参数传递给PrimeFaces Star Rating组件?

时间:2011-01-27 19:58:39

标签: java jsf parameters primefaces

我正在尝试使用PrimeFaces中的Star Rating组件。但是,它不允许您传入参数。这使得我无法进行查找以从数据库中获取我想要评分的实体。我尝试过类似的东西,但没有成功:

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

有没有其他方法可以将参数传递给我的动作类?有什么我想念的东西会让我得到我想要的行为吗?谢谢你的帮助!

4 个答案:

答案 0 :(得分:1)

我终于想出了如何做到这一点......

<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");

一块蛋糕!

答案 1 :(得分:1)

我解决了它如下:

<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"));

答案 2 :(得分:0)

f:viewParam允许您将请求参数传递给bean属性

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

id在页面加载的MyObj Bean中设置

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

由于您的bean具有id,因此在调用rateListener方法时,可以使用id将评级保存到数据库

答案 3 :(得分:0)

您是否尝试在按钮中使用f:setPropertyActionListener,以便可以将任何参数发送到您的操作类?或者你必须在p:rating中做到这一点?

或者您可以执行类似

的操作

私人评级;

// getter -setter

    

并在您的操作bean中,您可以访问此值 ((UIParameter)rating.getChildren()得到(0)。)的getValue();

如果是这种情况,你可能会做错了,因为当你使用JSF时不应该这样。

只是我的两分钱......