@DataModel problems
smithbstl Mar 30, 2007 1:11 PMI keep getting this returned via the debug page under my datamodel component. Why is the row unavailable? The wrapped data is some of the data returned via my query but the data model is not being displayed on the page. No exception is thrown.
class class org.jboss.seam.jsf.ListDataModel dataModelListeners [] rowAvailable false rowCount 1 rowData java.lang.IllegalArgumentException[row is unavailable] rowIndex -1 wrappedData [com.stlouiscity.csb.ejb.domain.Address[structureAddressPK=com.stlouiscity.csb.ejb.domain.AddressPK[sadrNlc=720, sadrHseNoSfx= , sadrHseNoLegl=6047]]] toString() org.jboss.seam.jsf.ListDataModel@1eca460
Here is my SFSB
@Stateful @Name("addressListing") @Scope(ScopeType.SESSION) public class AddressListing implements mypackage.AddressListingLocal { //@EJB private AddressLocatorLocal locator; @PersistenceContext(unitName="CSB_Oracle", type=EXTENDED) private EntityManager em; @In(create=true) FacesMessages facesMessages; @In private Address address; private Integer addressLookupPK; @DataModel private List<StructureAddress> addresses; @Out(required=false) private List<String> streetDirections; public AddressListing() { } public String findAddresses() { if (address.getStreetName() != null) { //Find StructureAddress Query q = em.createQuery("Select a From StructureAddress a Where" + " (a.structureAddressPK.houseNumber = :houseNumber OR :houseNumber IS NULL) AND" + " (a.structureAddressPK.houseSuffix = :suffix OR :suffix IS NULL) AND" + " (a.nlc.streetDirection = :streetDirection OR :streetDirection IS NULL) AND" + " (lower(a.nlc.streetName) LIKE :street OR :street IS NULL)"); q.setParameter("houseNumber",address.getHouseNumber()); q.setParameter("suffix",address.getHouseSuffix()); q.setParameter("streetDirection",address.getStreetDirection()); q.setParameter("street",address.getStreetName().toLowerCase() + "%"); addresses = q.getResultList(); } return null; } @Factory("streetDirections") public void fillStreetDirections() { Query query = em.createQuery("SELECT DISTINCT n.streetDirection FROM Nlc n WHERE n.streetDirection IS NOT NULL"); streetDirections = query.getResultList(); } @Remove @Destroy public void destroy() { } }
Here is the page
<tr:outputText value="No Addresses Found" rendered="#{empty addresses and addresses!=null}"/> <tr:table id="addresses" var="addressRow" value="#{addresses}" rowBandingInterval="1" rendered="#{addresses!=null}" rowSelection="single" partialTriggers="addressForm:search"> <tr:column> <f:facet name="header"> <tr:outputText value="#{msgs['AddressList.addressNumber']}"/> </f:facet> <s:link id="viewRequests" value="Requests" action="#{addressListing.findRequests}"/> </tr:column> <tr:column> <f:facet name="header"> <tr:outputText value="#{msgs['AddressList.addressNumber']}"/> </f:facet> <tr:outputText value="#{addressRow.structureAddressPK.houseNumber}"/> </tr:column> <tr:column> <f:facet name="header"> <tr:outputText value="#{msgs['AddressList.addressSuffix']}"/> </f:facet> <tr:outputText value="#{addressRow.structureAddressPK.houseSuffix}"/> </tr:column> <tr:column> <f:facet name="header"> <tr:outputText value="#{msgs['AddressList.streetDirection']}"/> </f:facet> <tr:outputText value="#{addressRow.nlc.streetDirection}"/> </tr:column> <tr:column> <f:facet name="header"> <tr:outputText value="#{msgs['AddressList.street']}"/> </f:facet> <tr:outputText value="#{addressRow.nlc.streetName}"/> </tr:column> <tr:column> <f:facet name="header"> <tr:outputText value="#{msgs['AddressList.streetType']}"/> </f:facet> <tr:outputText value="#{addressRow.nlc.streetType}"/> </tr:column> </tr:table>