[jboss-user] [JBoss Seam] - Hibernate Validation / Page Scope --> allways new entity
mrwhite
do-not-reply at jboss.com
Fri Jul 21 10:46:49 EDT 2006
Hi everybody,
i got a strange data manipulation problem.
I have a simple form i use for editing and inserting:
| <h:form>
| <s:validateAll>
| <div>
| <h:outputLabel for="firstname">Vorname: </h:outputLabel>
| </div>
| <div>
| <h:inputText id="firstname" value="#{newClientPerson.firstname}" size="70" maxlength="70" required="true"/>
| <span class="errors"><h:message for="firstname"/></span>
| </div>
| <div>
| <h:outputLabel for="lastname">Nachname: </h:outputLabel>
| </div>
| <div>
| <h:inputText id="lastname" value="#{newClientPerson.lastname}" size="70" maxlength="70" required="true"/>
| <span class="errors"><h:message for="lastname"/></span>
| </div>
| <div>
| <h:commandButton value="Speichern" action="#{clientPersonAction.saveClientPerson}"/>
| </div>
| </s:validateAll>
| </h:form>
|
And i have the following Action:
| @Stateless
| @Name("clientPersonAction")
| public class ClientPersonEditAction implements ClientPersonEdit{
|
| @PersistenceContext
| private EntityManager em;
|
| @RequestParameter()
| private Long clientPersonId;
|
| @In(required=false)
| @Out(scope=ScopeType.PAGE,required=false)
| @Valid
| private ClientPerson newClientPerson;
|
| @Factory("newClientPerson")
| public void createNewClientPerson()
| {
| if(clientPersonId != null)
| {
| ClientPersonDAO clientPersonDAO = new ClientPersonDAO(em);
| newClientPerson = clientPersonDAO.getClientPersonById(clientPersonId);
| System.out.println("createNewClientPerson:" + newClientPerson.getId());
| }
| else
| {
| newClientPerson = new ClientPerson();
| }
| }
|
| public String saveClientPerson() {
| ClientPersonDAO clientPersonDAO = new ClientPersonDAO(em);
| System.out.println("newClientPerson.getId():" + newClientPerson.getId());
| clientPersonDAO.merge(newClientPerson);
| return "home";
| }
|
|
| }
|
The Entity
package org.jboss.seam.example.client;
|
| import java.io.Serializable;
|
| import javax.persistence.Entity;
|
| import org.hibernate.validator.NotNull;
| import org.jboss.seam.ScopeType;
| import org.jboss.seam.annotations.Scope;
|
| @Scope(ScopeType.EVENT)
| @Entity
| public class ClientPerson extends Client implements Serializable{
|
| private static final long serialVersionUID = -7846741936105611777L;
| private String firstname;
| private String lastname;
|
| @NotNull
| public String getFirstname() {
| return firstname;
| }
|
| public void setFirstname(String firstname) {
| this.firstname = firstname;
| }
|
| @NotNull
| public String getLastname() {
| return lastname;
| }
|
| public void setLastname(String lastname) {
| this.lastname = lastname;
| }
|
|
|
|
|
| }
|
When I fill out the form and save a new object its correctly saved in the database. When some id is passed to the action i can edit the values from the database object and save everything back.
BUT: When i open a persisted object from the database and remove the field content from a field that has for example the hibernate validator annotation @NotNull i get the normal message "value required". Then i type in correct data and press the save button a new entity is persisted with all the other fields from the "old" entity but under a different id.
Summary: Adding and editing works. Saving a persisted object after a hibernate validation error creates a new one in the database.
Any suggestions on that?
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3959913#3959913
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3959913
More information about the jboss-user
mailing list