DataModel using Set does not work
andreigh.ts Jun 13, 2007 11:33 AMHi,
I am trying to use java.util.Set as a @DataModel but it throws an exception (javax.faces.el.PropertyNotFoundException .... Bean: org.hibernate.collection.PersistentSet) when trying to display the xhtml.
Replacing Set with List or array works very well.
Here is the code:
The Hibernate Entity bean that initially holds the set:
@Entity
@Table(name = "RFQ_Request", uniqueConstraints = {})
public class RfqRequest implements java.io.Serializable {
...
private Set<RfqRequestQuestion> rfqRequestQuestions = new HashSet<RfqRequestQuestion>(0);
...
}
One element of the Set looks like this:
@Entity
@Table(name = "RFQ_Question", uniqueConstraints = {})
public class RfqQuestion implements java.io.Serializable {
...
@Column(name = "Description", unique = false, nullable = false, insertable = true, updatable = true)
public String getDescription() {
return this.description;
}
...
}
A seam component that should expose the DataModel:
@Stateless
@Name("requestWizardQuestions")
public class RequestWizardQuestionsAction implements RequestWizardQuestions {
@In(required=false, scope=ScopeType.CONVERSATION)
@Out(required=false, scope=ScopeType.CONVERSATION)
private RfqRequest rfqRequest;
@DataModel
public Set<RfqRequestQuestion> getRfqQuestions() {
return rfqRequest.getRfqRequestQuestions();
}
@DataModelSelection
private RfqRequestQuestion selectedQuestion;
}
And the page that should display the DataModel:
...
<h:dataTable var="question" value="#{requestWizardQuestions.rfqQuestions}" >
<h:column>
<f:facet name="header">
<h:outputText value="Question"/>
</f:facet>
<h:outputText value="#{question.description}"/>
</h:column>
</h:dataTable>
...
This throws this exception when trying to display the page:
javax.faces.el.PropertyNotFoundException: /requestWizard/questions.xhtml @24,59
value="#{question.description}": Bean: org.hibernate.collection.PersistentSet, property: description
at com.sun.facelets.el.LegacyValueBinding.getValue(LegacyValueBinding.java:58)
at javax.faces.component.UIOutput.getValue(UIOutput.java:77)
.......
If I change the @DataModel and replace the Set < RfqQuestion > with RfqQuestion[]. it works.
What is wrong?
Thanks