Seam form submission errors
jbrosan Jul 13, 2007 1:18 PMI am currently experiencing a few problems with submitting form data. I must be missing something some where.
I am using Seam 2.0 BETA 1, JBoss AS 4.2 and Kubuntu 64
The problem is that I am getting the following errors when I submit the form. The action to display a simple list of users works correctly using the name provided to seam. Did I miss something when setting up my class methods?
Jboss Errors:
Caused by: javax.ejb.EJBTransactionRolledbackException: Could not get property value...
Caused by: java.lang.IllegalArgumentException: Invoking setPassword with wrong parameters...
I have setup the entity as follows
import ...
@Entity
@Table(name = "Users")
@Name("user")
public class UserImpl implements User
{...
Here is the setPassword method
@NotNull
@Length(min=3, max=15)
public void setPassword(String password)
{
this.password = password;
}
I have a simple form...
<!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"
xmlns:rich="http://richfaces.ajax4jsf.org/rich"
template="/layout/template.xhtml">
<ui:define name="body">
<h:form>
<table border="0">
<tr>
<td>Username</td>
<td><h:inputText value="#{user.userName}"/></td>
</tr>
<tr>
<td>First Name</td>
<td><h:inputText value="#{user.firstName}"/></td>
</tr>
<tr>
<td>Last Name</td>
<td><h:inputText value="#{user.lastName}"/></td>
</tr>
<tr>
<td>Password</td>
<td><h:inputSecret value="#{user.password}"/></td>
</tr>
</table>
<h:commandButton type="submit" value="Add User" action="#{useraction.addUser}"/>
</h:form>
</ui:define>
</ui:composition>
The addUser method in the UserActionImpl class
public String addUser()
{
em.persist(user);
List existing = em.createQuery("select userName from UserImpl where userName=:userName").setParameter("userName", user.getUserName()).getResultList();
if (existing.size()==0)
{
em.persist(user);
//log.info("Registered new user #{user.username}");
return "/admin/user/userlist.xhtml";
}
else
{
FacesMessages.instance().add("User #{user.userName} already exists");
return null;
}
}
I think I have everything setup correctly. Nothing fancy going on here just working through the basics.
Any assistance would be most appreciated.
Thank you,
John