ajax4jsf+seam2.0+conversation prob
mrohad Aug 18, 2007 3:03 PMok , sorry for the mess in my last msg
here is my prob:
I've a datatTable (I'm getting the rows from EntityQuery)
when I click on a row I open a modalPanel with the fields
the fields are bind to EntityHome and onRowClick I set the Entityhome Id using ajax:support
everything works so far
now I am editing the fields and click on ajax:commandButton and calling the action EntityHome.update and when I'm debuggin I can see none of the fields in the EntityHome.instance got updated.
I've no idea why the fields never get updated...
any clue???
thank u
here is my XHTML:
<?xml version="1.0" encoding="Windows-1255" ?>
<!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:a4j="https://ajax4jsf.dev.java.net/ajax"
xmlns:rich="http://richfaces.ajax4jsf.org/rich"
template="/layout/template.xhtml">
<ui:define name="body">
<h:messages globalOnly="true" styleClass="message" id="globalMessages" />
<rich:panel id="customerTable">
<f:facet name="header">table</f:facet>
<div class="results" id="customerList">
<a4j:region >
<rich:dataTable
onRowMouseOver="this.style.backgroundColor='#F1F1F1'"
onRowMouseOut="this.style.backgroundColor='#{a4jSkin.tableBackgroundColor}'"
id="customerListTable" var="customer" value="#{customerList.customers}"
rowKey="#{customer.id}" rowKeyVar="custId" >
<rich:column>
<f:facet name="header">
<s:link styleClass="columnHeader"
value="id #{customerList.order=='id asc' ? messages.down : ( customerList.order=='id desc' ? messages.up : '' )}">
<f:param name="order"
value="#{customerList.order=='id asc' ? 'id desc' : 'id asc'}" />
</s:link>
</f:facet>
#{customer.id}
</rich:column>
<rich:column>
<f:facet name="header">
<s:link styleClass="columnHeader"
value="name #{customerList.order=='name asc' ? messages.down : ( customerList.order=='name desc' ? messages.up : '' )}">
<f:param name="order"
value="#{customerList.order=='name asc' ? 'name desc' : 'name asc'}" />
</s:link>
</f:facet>
#{customer.name}
</rich:column>
<a4j:support event="onRowClick"
oncomplete="javascript:Richfaces.showModalPanel('custForm:panel')"
reRender="panel" data="#{rowKey}"
actionListener="#{customerHome.selectCustomerFromTable}">
<s:conversationId/>
<a4j:actionparam name="cust" id="cust" assignTo="#{customerHome.id}" value="#{customer.id}"/>
</a4j:support>
</rich:dataTable>
</a4j:region>
</div>
</rich:panel></a4j:form>
<!-- POPUP -->
<a4j:region id="popupregion">
<a4j:form id="custForm">
<rich:modalPanel id="panel" width="400" height="400">
<f:facet name="header">
<h:outputText value="edit customer" />
</f:facet>
<h:panelGrid columns="1">
<s:decorate template="/layout/display.xhtml">
<ui:define name="label">id</ui:define>
<h:inputText id="custId" value="#{customerHome.instance.id}" />
</s:decorate>
<s:decorate template="/layout/display.xhtml">
<ui:define name="label">name</ui:define>
<h:inputText id="name" value="#{customerHome.instance.name}" />
</s:decorate>
<a4j:commandButton id="updateCustomerButton" reRender="customerListTable" action="#{customerHome.update}" ajaxSingle="true" value="UPDATE"
oncomplete="javascript:Richfaces.hideModalPanel('custForm:panel')" >
<s:conversationId/>
</a4j:commandButton>
<h:commandButton onclick="javascript:Richfaces.hideModalPanel('custForm:panel')" value="close"></h:commandButton>
</h:panelGrid>
</rich:modalPanel>
</a4j:form>
</a4j:region>
</ui:define>
</ui:composition>
here is my EntityHome:
package com.metalogic.superfine.entity;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.Remove;
import javax.ejb.Stateful;
import javax.faces.event.ActionEvent;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.Begin;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.framework.EntityHome;
@Scope(ScopeType.CONVERSATION)
@Name("customerHome")
@Stateful
public class CustomerHome extends EntityHome<Customer> implements LocaLCustomerHome{
@Override
public Customer getInstance() {
// TODO Auto-generated method stub
return super.getInstance();
}
@Remove
public void destroy() {}
public void setCustomerId(String id) {
setId(new Integer(id));
}
public Integer getCustomerId() {
return (Integer) getId();
}
@Override
protected Customer createInstance() {
Customer customer = new Customer();
return customer;
}
public void wire() {
}
public boolean isWired() {
return true;
}
public Customer getDefinedInstance() {
return isIdDefined() ? getInstance() : null;
}
public List<CustomerAccounting> getCustomerAccountings() {
return getInstance() == null
? null
: new ArrayList<CustomerAccounting>(getInstance()
.getCustomerAccountings());
}
public List<Invoice> getInvoices() {
return getInstance() == null ? null : new ArrayList<Invoice>(
getInstance().getInvoices());
}
public List<CustomerConnection> getCustomerConnections() {
return getInstance() == null
? null
: new ArrayList<CustomerConnection>(getInstance()
.getCustomerConnections());
}
@Begin(join=true)
public void selectCustomerFromTable(ActionEvent event){
setId(new Integer(getId().toString()));
}
@Override
public String update() {
System.out.println("UPDATE");
return super.update();
}
}