[jboss-user] [JBoss Seam] - Seam Component Property Error (Weirdness)

nathandennis do-not-reply at jboss.com
Fri May 25 02:34:50 EDT 2007


Jboss 4.0.5
seam 1.2 patch1
postgres
blah, blah, blah

i recently had what i believe to be a strange occurrence while writing a very simple app. 

pay attention to destaddress property of Formmail...


  | @Entity
  | @Table(name = "formmail")
  | @Name("formmail")
  | public class Formmail implements Serializable {
  | 
  | 	/**
  | 	 * 
  | 	 */
  | 	private static final long serialVersionUID = 1L;
  | 	/**
  | 	 * 
  | 	 */
  | 
  | 	private String form;
  | 	private String destaddress;
  | 
  | 
  | 	@Id
  | 	@NotNull
  | 	@Length(max = 10)
  | 	@Column(name="form")
  | 	public String getForm() {
  | 		return this.form;
  | 	}
  | 
  | 	public void setForm(String form) {
  | 		this.form = form;
  | 	}
  | 
  | 	@Length(max = 80)
  | 	@Column(name="destaddress")
  | 	public String getDestAddress() {
  | 		return this.destaddress;
  | 	}
  | 
  | 	public void setDestAddress(String destaddress) {
  | 		this.destaddress = destaddress;
  | 	}
  | 	
  | 	@Override
  | 	public String toString()
  | 	  {
  | 	      return "Formmail(" + form + "," + destaddress + ")";
  | 	   }
  | }
  | 
  | 
  | ****************
  | 
  | import javax.ejb.Local;
  | @Local
  | public interface FormmailSearch {
  | 
  | 	   public int getPageSize();
  | 	   public void setPageSize(int pageSize);
  | 	   
  | 	   public String getSearchString();
  | 	   public void setSearchString(String searchString);
  | 	   
  | 	   public String getSearchPattern();
  | 	   
  | 	   public void find();
  | 	   public void nextPage();
  | 	   public boolean isNextPageAvailable();
  | 
  | 	   public void destroy();
  | 	   
  | 	}
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | *********************
  | //
  | @Stateful
  | @Name("formmailSearch")
  | @Scope(ScopeType.SESSION)
  | @Restrict("#{identity.loggedIn}")
  | public class FormmailSearchAction implements FormmailSearch
  | {
  |    
  |    @PersistenceContext
  |    private EntityManager em;
  | 
  | 
  |    private String searchString;
  |    private int pageSize = 10;
  |    private int page;
  |    
  |    @DataModel
  |    private List<Formmail> formmails;
  |    
  |    public void find()
  |    {
  |       page = 0;
  |       queryFormmails();
  |    }
  |    public void nextPage()
  |    {
  |       page++;
  |       queryFormmails();
  |    }
  |      
  |    @SuppressWarnings("unchecked")
  | private void queryFormmails()
  |    {
  |       formmails = em.createQuery("select f from Formmail f where lower(f.form) like #{pattern}")
  |             .setMaxResults(pageSize)
  |             .setFirstResult( page * pageSize )
  |             .getResultList();
  |    }
  | 
  |    
  |    public boolean isNextPageAvailable()
  |    {
  |       return formmails!=null && formmails.size()==pageSize;
  |    }
  |    
  |    public int getPageSize() {
  |       return pageSize;
  |    }
  |    
  |    public void setPageSize(int pageSize) {
  |       this.pageSize = pageSize;
  |    }
  |    
  |    @Factory(value="pattern", scope=ScopeType.EVENT)
  |    public String getSearchPattern()
  |    {
  |       return searchString==null ? 
  |             "%" : '%' + searchString.toLowerCase().replace('*', '%') + '%';
  |    }
  |    
  |    public String getSearchString()
  |    {
  |       return searchString;
  |    }
  |    
  |    public void setSearchString(String searchString)
  |    {
  |       this.searchString = searchString;
  |    }
  |    
  |    @Destroy @Remove
  |    public void destroy() {}
  | 
  | 
  | ****************
  | <a:outputPanel id="searchResults">
  |   <div class="section">
  | 	<h:outputText value="No Entrys Like That Found" rendered="#{formmails != null and formmails.rowCount==0}"/>
  | 	
  | 	<h:dataTable id="formmails" value="#{formmails}" var="mail" rendered="#{formmails.rowCount>0}">
  | 	 
  | 		<h:column>
  | 			<f:facet name="header">Form:</f:facet>
  | 			#{mail.form}
  | 		</h:column>
  |     
  |     	<h:column>
  | 			<f:facet name="header">Destination Address</f:facet>
  | 			#{mail.destaddress}
  | 		</h:column>
  | 
  | 		<h:column>
  | 				<s:link id="viewFormmail" value="View Record" action="#{formmailPersist.selectFormmail(mail)}"/>
  | 		</h:column>
  | 	</h:dataTable>
  | 	
  | 	
  | 	<s:link value="More results" action="#{formmailSearch.nextPage}" rendered="#{formmailSearch.nextPageAvailable}"/>
  |   </div>
  | </a:outputPanel>
  | 
  | *******************
  | 


this gave me a error
Exception during request processing: javax.servlet.ServletException: /FormmailList.xhtml: Bean: com.foo.Formmail, property: destaddress
......
after banging my head against the table for a while,, i figured out that Seam had changed the property name from destaddress to destAddress.

WHY?? 

I went back and change the name of the column in my db,, then alter my code a little... none of the weird junk,,, just with destaddress-->destAddress.

explanation anyone???

what don't i understand??
i mean randomly mapping characters in a variable name string to upper case makes the mapping a little difficult if you catch my drift. 

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4048575#4048575

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4048575



More information about the jboss-user mailing list