2011-01-27 18 views
8

Estoy tratando de hacer uso del componente Star Rating de PrimeFaces. Sin embargo, no le permite pasar parámetros. Eso hace que sea imposible para mí hacer una búsqueda para obtener la entidad de la base de datos que me gustaría calificar. He intentado algo como esto, pero sin éxito:Pasando los parámetros al componente PrimeFaces Star Rating?

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

¿Hay otra manera de que pueda pasar el parámetro en mi clase de la acción? ¿Hay algo que me falta que me permita obtener el comportamiento que quiero? ¡Gracias por tu ayuda!

+0

No veo cómo eso es útil en este ejemplo particular. Está haciendo referencia al ** mismo ** objeto tanto en '# {myObj.myRating}' como en '# {myObj.id}'. ¿Cómo es posible que '# {myObj.myRating}' no conozca su propio 'id'? Trata de llegar a un mejor ejemplo del mundo real. – BalusC

+0

Imagine ver un artículo en un sitio de comercio electrónico. Le gustaría poder darle una calificación.No quiero tener que crear una nueva conversación de Seam para cada elemento que ve, así que tendré que mantener el estado y pasar la ID del artículo como parámetro para poder establecer la calificación en consecuencia. – Shadowman

Respuesta

1

finalmente me di cuenta de cómo hacer esto ...

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

Entonces, en mi clase de la acción, que soy capaz de obtener el valor de selectedObj haciendo esto ...

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

Piece of cake!

0

f: viewParam permite pasar parámetros de la petición a las propiedades del bean

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

ID se encuentra en el MyObj frijol en la página de carga

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

Desde el bean tiene el ello, cuando el método rateListener se llama id. se puede usar para guardar la calificación en la base de datos

+0

¿Está disponible en JSF 1.2? ¿O solo 2.0? Nuestra aplicación está haciendo uso de 1.2. – Shadowman

0

has intentado usar f: setPropertyActionListener en tu botón para que puedas enviar cualquier parámetro quieres tu clase de acción? o tienes que hacerlo dentro de la calificación p:

o puede hacer algo como

puntuación Nota privada;

// getter -setter

y en su grano de acción, se puede acceder a este valor ((UIParameter) rating.getChildren(). Get (0)). GetValue() ;

si este es el caso, puede estar haciendo algo mal ya que no debería ser el caso mientras está usando JSF.

sólo mis dos centavos ...

+0

Hmmmm ... no parece funcionar para mí. O eso, o no lo estoy haciendo bien. ¿Tiene un ejemplo de cómo lo configuraría? Puede que no lo esté haciendo bien. – Shadowman

1

Lo resuelto de la siguiente manera:

<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> 

En mi bean de respaldo, que soy capaz de obtener el valor de contentId de la siguiente manera:

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