[jboss-user] [JBoss Seam] - Using the EntityHome and problems therein
sjmenden
do-not-reply at jboss.com
Thu Nov 16 15:21:47 EST 2006
I am creating a Help Ticketing system and I am following the SEAM documenation and making use of the EntityHome for CRUDing my Ticket Entity. The initial creation and updating works great, however when I go to view tickets, then click on a ticket which gets redirected back to my original ticket.xhtml page, with ticketId as a parameter, I can not for the life of me get the ticket to display.
I need another pair of eyes to see where I am going wrong.
ticket.xhtml
| <ui:composition xmlns="http://www.w3.org/1999/xhtml"
| xmlns:s="http://jboss.com/products/seam/taglib"
| xmlns:ui="http://java.sun.com/jsf/facelets"
| xmlns:f="http://java.sun.com/jsf/core"
| xmlns:h="http://java.sun.com/jsf/html"
| template="template.xhtml">
|
| <ui:define name="content">
|
| <h1 class="center">
| <h:outputText rendered="#{!ticketHome.managed}" value="Create Ticket"/>
| <h:outputText rendered="#{ticketHome.managed}" value="Edit Ticket"/>
| </h1>
|
| <h:messages globalOnly="true" styleClass="message"/>
|
| <h:form id="createTicket">
| <f:facet name="beforeInvalidField">
| <s:message/>
| </f:facet>
| <f:facet name="afterInvalidField">
| <h:graphicImage src="img/error.gif"/>
| </f:facet>
| <f:facet name="aroundInvalidField">
| <s:span styleClass="errors"/>
| </f:facet>
|
| <s:validateAll>
|
| <table class="form-center">
|
| <tr>
| <td colspan="2" align="center" class="table-heading">Contact Information</td>
| </tr>
| <tr>
| <td class="name">Name</td>
| <td align="right">
| <s:decorate>
| <h:inputText id="name" required="true" value="#{ticketHome.instance.name}"/>
| </s:decorate>
| </td>
| </tr>
| <tr>
| <td>
| <span class="name">Problem Description</span>
| </td>
| <td align="right">
| <s:decorate>
| <h:inputTextarea id="problemDescription" required="true" cols="50" rows="20" value="#{ticketHome.instance.problemDescription}"/>
| </s:decorate>
| </td>
| </tr>
|
| <tr>
| <td></td>
| <td align="right">
| <h:commandButton value="Create Ticket" action="#{ticketHome.persist}" rendered="#{!ticketHome.managed}"/>
| <h:commandButton value="Update Ticket" action="#{ticketHome.update}" rendered="#{ticketHome.managed}"/>
| <h:commandButton value="Delete Ticket" action="#{ticketHome.remove}" rendered="#{ticketHome.managed}"/>
| <s:link id="done" value="Done" linkStyle="button" propagation="end" view="/viewTickets.xhtml"/>
| </td>
| </tr>
|
| </table>
| </s:validateAll>
| </h:form>
|
| </ui:define>
| </ui:composition>
|
Ticket.java
| @Entity
| @Name("ticket")
| @Role(name="tempTicket", scope=ScopeType.EVENT)
| @Table(name="tickets")
| public class Ticket implements Serializable {
|
| //seam-gen attributes (you should probably edit these)
| private int id;
| private Integer version;
| private String name;
|
|
| @Id @GeneratedValue
| public int getId() {
| return id;
| }
|
| public void setId(int id) {
| this.id = id;
| }
|
| @Version
| public Integer getVersion() {
| return version;
| }
|
| private void setVersion(Integer version) {
| this.version = version;
| }
|
| @NotNull
| @Column(length=50)
| @Length(max=50)
| public String getName() {
| return name;
| }
|
| @Lob
| public String getProblemDescription() {
| return problemDescription;
| }
|
| public void setProblemDescription(String problemDescription) {
| this.problemDescription = problemDescription;
| }
|
| }
|
|
viewTickets.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"
| xmlns:s="http://jboss.com/products/seam/taglib"
| xmlns:a="https://ajax4jsf.dev.java.net/ajax"
| template="template.xhtml">
|
| <!-- content -->
| <ui:define name="content">
| <div class="center">
| <h1>Tickets</h1>
| </div>
|
| <!-- Display the form for searching for tickets-->
| <s:validateAll>
| <table cellspacing="1" cellpadding="1" border="0" class="form-center">
| <tr>
| <td>
| Subject:
| </td>
| <td>
| <h:inputText value="#{tempTicket.subject}"/>
| </td>
| </tr>
|
| <tr>
| <td> </td>
| <td align="right">
| <h:commandButton value="Search" action="#{viewTickets.view}" styleClass="button" />
| </td>
| </tr>
| </table>
| </s:validateAll>
| <br />
| <br />
|
| <!-- ***************************************************************** -->
| <!-- Data Table of Tickets -->
| <!-- ***************************************************************** -->
| <h:dataTable value="#{tickets}"
| var="ticket"
| rendered="#{tickets.rowCount > 0}"
| styleClass="fiapps-table">
|
| <!-- Ticket Number -->
| <h:column>
| <f:facet name="header">
| <h:commandLink value="Ticket #" action="#{viewTickets.reorder}">
| <f:param name="orderBy" value="id"/>
| </h:commandLink>
| </f:facet>
| <s:link id="ticket" value="#{ticket.id}" view="/ticket.xhtml">
| <f:param name="ticketId" value="#{ticket.id}"/>
| </s:link>
| </h:column>
|
| <!-- Subject -->
| <h:column>
| <f:facet name="header">
| <h:commandLink value="Subject" action="#{viewTickets.reorder}">
| <f:param name="orderBy" value="subject"/>
| </h:commandLink>
| </f:facet>
| <h:outputText value="#{ticket.subject}" />
| </h:column>
|
| </h:dataTable>
| <br />
| <h:messages/>
| <br />
| <div class="center">
| <h:commandButton rendered="#{tickets.rowCount > 0}"
| type="submit"
| value="Refresh"
| action="#{viewTickets.findFirstPage}" />
| <h:commandButton action="#{viewTickets.findPreviousPage}"
| value="Previous Page"
| disabled="#{!viewTickets.previousPage}"
| rendered="#{tickets.rowCount > 0}"/>
| <h:commandButton action="#{viewTickets.findNextPage}"
| value="Next Page"
| disabled="#{!viewTickets.nextPage}"
| rendered="#{tickets.rowCount > 0}"/>
| </div>
| </h:form>
| <br />
| </ui:define>
|
| </ui:composition>
|
|
when I click on the Ticket Number I get in the url bar: http://localhost:8080/fiapps/ticket.seam?ticketId=1&dataModelSelection=ticket%3Atickets%5B0%5D
so I know the ticketId is getting passed. But the ticket is not getting loaded. Here are some additional classes.
TicketHome.java
| @Name("ticketHome")
| public class TicketHome extends EntityHome<Ticket> {
|
|
| @Factory("ticket")
| public Ticket initPerson() {
| return getInstance();
| }
|
| protected Ticket createInstance() {
| Ticket ticket = new Ticket();
| return ticket;
| }
|
| public String getCreatedMessage() { return "New Ticket (#{ticket.subject}) created"; }
| public String getUpdatedMessage() { return "Ticket (#{ticket.subject}) updated"; }
| public String getDeletedMessage() { return "Ticket (#{ticket.subject}) deleted"; }
| }
|
ViewTicketsBean.java - the relevant part
| @Name("viewTickets")
| @Stateful
| @Scope(ScopeType.CONVERSATION)
| public class ViewTicketsBean implements ViewTickets {
|
| @In(create=false, value="tempTicket") @Out(value="tempTicket")
| private Ticket tempTicket;
|
| @Logger
| private Log log;
|
| @DataModel
| private List<Ticket> tickets;
|
| @DataModelSelection
| private Ticket ticket;
|
| @In(create=true)
| private EntityManager entityManager;
|
| ...
|
Any help would be greatly appreciated.
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3986663#3986663
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3986663
More information about the jboss-user
mailing list