EntityConverter with patch for seam 1.2.0
vlaugier Sep 24, 2007 3:05 PMHello,
we have been strugling all day trying to make the patch for EntityConverter work
for seam_EAP 4.2 with integrated seam 1.2.0
we have followed
http://wiki.jboss.org/wiki/Wiki.jsp?page=SeamEntityConverter
but it doesn't work and we are short of ideas now
we get the following error in french
sourceId=createService:radioService[severity=(ERROR 2), summary=(la valeur nest pas valide), detail=(la valeur nest pas valide)]
which I translate as
sourceId=createService:radioService[severity=(ERROR 2), summary=(value is not valid), detail=(value is not valid)]
I put as attachment our code for the web page and the manager (bean + interface)
I know the support is not meant for debugging our code, but in that case I dare to ask since this is a basic functionnality of seam that we expect to work
the web page code
<!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"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:rich="http://richfaces.ajax4jsf.org/rich"
xmlns:ec="http://jboss.com/products/seam/entityconverter/taglib"
template="layout/template.xhtml">
<ui:define name="body">
<h:messages globalOnly="true" styleClass="message"/>
<h:form id="createService" styleClass="edit">
<rich:panel>
<f:facet name="header">Créer un compte</f:facet>
<s:validateAll>
<div class="input">
<s:decorate template="layout/edit.xhtml">
<ui:define name="label">nom du service :</ui:define>
<h:inputText id="login" size="50" value="#{service.name}" required="true" />
</s:decorate>
</div>
<div class="input">
<h:selectOneRadio id="radioService" value="#{selectedService}">
<s:selectItems value="#{createService.services}" var="row"
label="#{row.name}" /><br/>
<ec:convertEntity />
</h:selectOneRadio>
</div>
</s:validateAll>
</rich:panel>
<div class="actionButtons">
<h:commandButton value="Créer le service"
action="#{createService.createService()}"/>
</div>
</h:form>
</ui:define>
</ui:composition>
the manager bean
package fr.helmet.portal.manager;
import fr.helmet.portal.entity.Service;
import java.util.List;
import javax.ejb.Remove;
import javax.ejb.Stateful;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.PersistenceContextType;
import org.jboss.seam.annotations.Create;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Destroy;
import org.jboss.seam.annotations.Logger;
import org.jboss.seam.annotations.Out;
import org.jboss.seam.log.Log;
import org.jboss.seam.core.FacesMessages;
@Stateful
@Name("createService")
public class CreateServiceBean implements CreateService {
@Logger private Log log;
@In FacesMessages facesMessages;
@In (required=false)
@Out (required=false)
private Service service;
@PersistenceContext(type=PersistenceContextType.EXTENDED)
private EntityManager entityManager;
@In (required=false)
private Service selectedService;
public Service getSelectedService() {
return selectedService;
}
public void setSelectedService(Service selectedService) {
this.selectedService = selectedService;
}
private List<Service> services;
public void createService()
{
//implement your business logic here
//log.info("createService.createService() action called with: #{createService.name}");
//facesMessages.add("createService #{createService.name}");
System.out.println("enregistrement du produit");
if (this.selectedService != null) this.service.setParentService(selectedService);
entityManager.persist(service);
this.services.add(service);
this.service = null;
}
//add additional action methods
@Create
public void find() {
this.services = entityManager.createQuery("select c from Service c").getResultList();
}
public Service getService() {
return service;
}
public void setService(Service service) {
this.service = service;
}
public List<Service> getServices() {
return services;
}
public void setServices(List<Service> services) {
this.services = services;
}
@Destroy @Remove
public void destroy() {}
}
hope someone had this problem already
patching old version is such a pain, arghhh !!