In an attempt to learn Seam I am experimenting with a simple CRUD example, partly based on
the Yuan/Heute book.
The integration example shows an edit link as:
<a href="person.seam?pid=#{fan.id}">Edit</a>
With the Person class having:
@Entity
| @Name("person")
| public class Person {
| private long id;
| @Id @GeneratedValue
| public long getId() { return id;}
| public void setId(long id) { this.id = id; }
and person.xhtml having:
<h2>Edit #{person.name}</h2>
| <h:form>
| <input type="hidden" name="pid"
| value="#{person.id}"/>
and the ManagerAction class having:
@Stateful
| @Name("manager")
| public class ManagerAction implements Manager {
|
| @In (required=false) @Out (required=false)
| private Person person;
|
| // @RequestParameter
| Long pid;
|
| @DataModel
| private List <Person> fans;
|
| @DataModelSelection
| private Person selectedFan;
|
| public void setPid (Long pid) {
| this.pid = pid;
|
| if (pid != null) {
| person = (Person) em.find(Person.class, pid);
| } else {
| person = new Person ();
| }
| }
|
| public Long getPid () {
| return pid;
| }
Apologies for taking so long to get to the point but the issue I have is that I keep
getting property X not found on type Y. I had assumed that a Person instance would be
maintained in the session state and injected/outjected as appropriate.
I had also assumed that the setPid method would be invoked via the edit link and thereby
set person to the appropriate entity via the id, but this method isn't even called for
me. The fact that the RequestParameter annotation is commented out is a little
disconcerting.
To make this work, up to a point, I have had to add @Scope(SESSION) to the entity and
session beans but I still find that I am faced with a newly constructed Person instance
rather than the one I thought I was operating on and that had been outjected into the
shared context.
In desperation, I've also tried using the @DataModelSelection but without success -
property not found again.
I suspect I'm missing something fundamental and have read about bijection and studied
the example which look straightforward enough but something is missing and I can't
figure out what it is!
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4090337#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...