[jboss-user] [JBoss Seam] - Entities Get Updated--Screen Doesn't (Usually)
gzoller
do-not-reply at jboss.com
Wed Feb 21 19:49:49 EST 2007
I'm having a strange problem where particular entity changes are not (usually) being reflected on my screens. I start with a vanilla seam-gen application that generates these artifacts:
| DepartmentList.xhtml (main application screen)
| DepartmentList.page.xml
| ProjectList.xhmtl (List of Projects)
| ProjectList.page.xhtml
|
| Department.java (@Entity)
| DepartmentList.java (extends EntityQuery)
| DeparmentHome (extends EntityHome)
| Project.java (@Entity)
| ProjectList.java (extends EntityQuery)
| ProjectHome (extends EntityHome)
|
|
| Easiest way to show you where I'm going is to look at a picture of part of the DepartmentList screen: http://sawdust.50webs.com/images/spurs_display.jpg
| (No comments on the artwork please--I'm a server-side guy! I'll let the UI pros do what they do best.)
| You'll see departments with a sub-listing of projects for ea. dept.
|
| You see the "tape recorder" buttons? They change the status on Projects (update the entity). When I push these buttons the Project entities actually are correctly persisted to the database but no changes appear on the DisplayList screen. :-( Reloading the screen or visiting most other screens has no effect--the db and the screen are still out-of-sync.
|
| Here's the weird part: If I first go to the ProjectList.xhtml screen (not touching anything there--just let it render) then immediately go back to DepartmentList.xhtml then click on a tape-recorder button for one click only the on-screen status changes immediately as desired. Subsequent clicks continue to change the persisted Project status but no screen changes occur unless I again visit ProjectList.xhtml. Huh?
|
| This is hard to diagnose w/o seeing all the code, but I didn't want to dump reams of useless code into the forum. I'll post a chunk of ProjectList.xhtml since there seems to be some "magic" in simply visiting this page. If other files would be helpful let me know and I'll post them.
|
| When I click a tape-recorder button in DepartmentList.xhtml (<s:link> w/image) I pass the ProjectId as a <f:param>. A stateful session bean does an em.find() on the ProjectId to get the Project entity, simply calls proj.setStatus() and we're done. Nothing fancy. Somewhere, somehow--something in the UI is still holding onto a copy of the previous Project object.
|
| Thanks in advance for any advice/clues!
| Greg
|
| ProjectList.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: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="layout/template.xhtml">
| |
| | <ui:define name="body">
| |
| | <h:messages globalOnly="true" styleClass="message" id="globalMessages"/>
| | <div class="results" id="projectList">
| |
| | <h3>Projects</h3>
| |
| | <h:outputText value="No project exists"
| | rendered="#{empty projectList.resultList}"/>
| |
| | <h:dataTable id="projectList"
| | var="project"
| | value="#{projectList.resultList}"
| | rendered="#{not empty projectList.resultList}">
| | <h:column>
| | <f:facet name="header">
| | <s:link styleClass="columnHeader"
| | value="projectId #{projectList.order=='projectId asc' ? messages.down : ( projectList.order=='projectId desc' ? messages.up : '' )}">
| | <f:param name="order" value="#{projectList.order=='projectId asc' ? 'projectId desc' : 'projectId asc'}"/>
| | </s:link>
| | </f:facet>
| | #{project.projectId}
| | </h:column>
| | <h:column>
| | <f:facet name="header">
| | <s:link styleClass="columnHeader"
| | value="version #{projectList.order=='version asc' ? messages.down : ( projectList.order=='version desc' ? messages.up : '' )}">
| | <f:param name="order" value="#{projectList.order=='version asc' ? 'version desc' : 'version asc'}"/>
| | </s:link>
| | </f:facet>
| | #{project.version}
| | </h:column>
| | <h:column>
| | <f:facet name="header">
| | <s:link styleClass="columnHeader"
| | value="department deptId #{projectList.order=='department.deptId asc' ? messages.down : ( projectList.order=='department.deptId desc' ? messages.up : '' )}">
| | <f:param name="order" value="#{projectList.order=='department.deptId asc' ? 'department.deptId desc' : 'department.deptId asc'}"/>
| | </s:link>
| | </f:facet>
| | #{project.department.deptId}
| | </h:column>
| |
| | <!-- CLIP! Lots more like this to draw out the rest of Project's fields -->
| | </h:dataTable>
| |
| | </div>
| |
| | <div class="tableControl">
| |
| | <s:link view="/ProjectList.xhtml"
| | rendered="#{projectList.previousExists}"
| | value="#{messages.left}#{messages.left} First Page"
| | id="firstPage">
| | <f:param name="firstResult" value="0"/>
| | </s:link>
| |
| | <s:link view="/ProjectList.xhtml"
| | rendered="#{projectList.previousExists}"
| | value="#{messages.left} Previous Page"
| | id="previousPage">
| | <f:param name="firstResult"
| | value="#{projectList.previousFirstResult}"/>
| | </s:link>
| |
| | <s:link view="/ProjectList.xhtml"
| | rendered="#{projectList.nextExists}"
| | value="Next Page #{messages.right}"
| | id="nextPage">
| | <f:param name="firstResult"
| | value="#{projectList.nextFirstResult}"/>
| | </s:link>
| |
| | <s:link view="/ProjectList.xhtml"
| | rendered="#{projectList.nextExists}"
| | value="Last Page #{messages.right}#{messages.right}"
| | id="lastPage">
| | <f:param name="firstResult"
| | value="#{projectList.lastFirstResult}"/>
| | </s:link>
| |
| | </div>
| |
| | <s:div styleClass="actionButtons" rendered="#{empty from}">
| | <s:button view="/ProjectEdit.xhtml"
| | id="create"
| | value="Create project">
| | <f:param name="projectProjectId"/>
| | </s:button>
| | </s:div>
| |
| | </ui:define>
| |
| | </ui:composition>
| |
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4020353#4020353
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4020353
More information about the jboss-user
mailing list