[jboss-user] [JBoss Seam] - Examples about Application Framework (Chapter 11)
zakmck
do-not-reply at jboss.com
Wed Sep 5 11:42:33 EDT 2007
Hi all,
I cannot make the examples in chapter 11 working:
http://docs.jboss.com/seam/2.0.0.B1/reference/en/html/framework.html
I've started with Person and PersonHome, with the creation button only. And worked up to that point.
Then I've added update and delete, and I've added a query object, so that I can have an access point to the edit page.
What I get is: 1) Creation still works 2) when I select some item to be updated and I submit the edit form anything is updated. If I click on delete, anything is deleted either 3) After having clicked on update or delete, I am bring back to the creation page (with Create button only)
I've tried to extend update() in PersonHome, to add a logging message, and I may see the method is not called at all, same for delete. I also have tried to add a foo() action to the home, and this isn't called either.
Please find the code below. I am afraid I am missing something important.
Thanks in advance for any help.
Cheers.
Marco.
Person.java
| import java.io.Serializable;
| import javax.persistence.Entity;
| import javax.persistence.GeneratedValue;
| import javax.persistence.Id;
| import org.jboss.seam.annotations.Scope;
| import org.jboss.seam.ScopeType;
|
| @Entity
| public class Person implements Serializable {
| @Id @GeneratedValue private Long id;
| private String name;
|
| public Long getId() { return id; }
| public void setId(Long id) { this.id = id; }
|
| public String getName() { return name; }
| public void setName(String name) { this.name = name; }
| }
|
PersonHome.java
| import javax.ejb.Stateful;
| import org.jboss.seam.ScopeType;
| import org.jboss.seam.annotations.*;
| import uk.ac.ebi.microarray.model.Person;
| import org.jboss.seam.framework.EntityHome;
| import org.jboss.seam.annotations.web.RequestParameter;
| import org.jboss.seam.log.Log;
|
| @Name("personHome")
| public class PersonHome extends EntityHome<Person>
| {
| @RequestParameter Long personId;
| @Logger private Log log;
|
|
| public Long getId () {
| return personId;
| }
|
| public void setId ( Long id ) {
| personId = id;
| }
|
|
| @Factory( "person" )
| public Person initPerson () { return getInstance (); }
|
|
| public String update ( )
| {
| log.info ( ">>> Calling PersonHome.update()" );
| return super.update ();
| }
|
| public String persist ( )
| {
| log.info ( ">>> Calling PersonHome.persist()" );
| return super.persist ();
| }
|
|
|
| public String foo ( )
| {
| log.info ( ">>> Calling PersonHome.foo()" );
| return super.update ();
| }
|
|
| }
|
person.xhtml
| <!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
| "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
| <ui:composition xmlns="http://www.w3.org/1999/xhtml"
| xmlns:ui="http://java.sun.com/jsf/facelets"
| xmlns:h="http://java.sun.com/jsf/html"
| xmlns:f="http://java.sun.com/jsf/core"
| template="layout/template.xhtml">
|
| <ui:define name="body">
|
|
| <h1>
| <h:outputText rendered = "#{!personHome.managed}" value = "New Person" />
| <h:outputText rendered = "#{personHome.managed}" value = "Edit Person" />
| </h1>
|
| <h:form>
| Name: <h:inputText value="#{person.name}"/><br/><br/>
|
| <div>
| <h:commandButton value="Create Contact" action="#{personHome.persist}" rendered="#{!personHome.managed}"/>
| <h:commandButton value="Update Contact" action="#{personHome.update}" rendered="#{personHome.managed}"/>
| <h:commandButton value="Delete Contact" action="#{personHome.remove}" rendered="#{personHome.managed}"/>
| <h:commandButton value="Foo" action="#{personHome.foo}" rendered="#{personHome.managed}"/>
| </div>
|
| </h:form>
|
| <h:messages styleClass="message"/>
|
| </ui:define>
|
| </ui:composition>
|
people.xhtml
| <ui:composition xmlns="http://www.w3.org/1999/xhtml"
| xmlns:ui="http://java.sun.com/jsf/facelets"
| xmlns:h="http://java.sun.com/jsf/html"
| xmlns:f="http://java.sun.com/jsf/core"
| xmlns:s="http://jboss.com/products/seam/taglib"
| template="layout/template.xhtml"
| >
|
| <ui:define name="body">
|
| <h1>List of people</h1>
|
| <h:dataTable value="#{people.resultList}" var="person">
| <h:column>
| <s:link view="/person.seam" value="#{person.name}">
| <f:param name="personId" value="#{person.id}"/>
| </s:link>
| </h:column>
| </h:dataTable>
|
| </ui:define>
|
| </ui:composition>
|
|
Also I have the parameter specification in pages.xml:
| <page view-id="/person.xhtml">
| <param name="personId" value="#{person.id}"/>
| </page>
|
And the query spec in components.xml:
| <framework:entity-query name="people" ejbql="select p from Person p"/>
|
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4081383#4081383
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4081383
More information about the jboss-user
mailing list