Bom Dia a todos.
Estou fazendo uma aplicação com 2 scrollableDataTable. Algo bem simples, apenas para começar a usar o JSF.
Em um deles, há um h:inputText onde, no onblur do componente, da um reRender no outro scrollableDataTable.
Ao fazer isso, da um erro de JS, dizendo apenas que a 'width é nulo ou não é um objeto'.
Alguma sugestão?
Edit:
Apenas algumas informações.
Estou usando Win XP com IE 6.0.
Eclipse Europa
JBoss 4.2.2.GA
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:rich="http://richfaces.org/rich"
xmlns:a4j="http://richfaces.org/a4j">
<f:view>
<style>
body { margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; }
</style>
<h:form>
<table width="1000" cellpadding="0" cellspacing="0">
<tr>
<td width="1000" height="80" colspan="2">
<rich:panel style="width:1000;height:100%;">
<f:facet name="header">
Aqui sera o Header
</f:facet>
Usuario: xxxxxx Ambiente: xxxxxxx V2
</rich:panel>
</td>
</tr>
<tr>
<td width="800" height="40%">
<rich:scrollableDataTable value="${pedidoMB.pedidoMediator.itensMenu}" var="item" width="800">
<rich:column width="200">
<f:facet name="header">Quantidade</f:facet>
<h:inputText value="${item.quantidade}">
<a4j:support event="onblur" reRender="listItens" action="${pedidoMB.pedidoMediator.atualizaPedido}"/>
</h:inputText>
</rich:column>
<rich:column width="200">
<f:facet name="header">Codigo</f:facet>
<h:outputText value="${item.codigo}"/>
</rich:column>
<rich:column width="400">
<f:facet name="header">Descricao</f:facet>
<h:outputText value="${item.descricao}"/>
</rich:column>
</rich:scrollableDataTable>
</td>
<td width="200" valign="top">
<rich:panel>
<f:facet name="header">
Definir o que contera aqui
</f:facet>
</rich:panel>
</td>
</tr>
<tr>
<td width="800" height="40%">
<h:panelGroup id="listItens">
<rich:scrollableDataTable value="${pedidoMB.pedidoMediator.itens}" var="item" width="800">
<rich:column width="200">
<f:facet name="header">Quantidade</f:facet>
<h:outputText value="${item.quantidadetotal}"/>
</rich:column>
<rich:column width="200">
<f:facet name="header">Quantidade na formula</f:facet>
<h:outputText value="${item.quantidadeformula}"/>
</rich:column>
<rich:column width="200">
<f:facet name="header">Codigo</f:facet>
<h:outputText value="${item.codigo}"/>
</rich:column>
<rich:column width="200">
<f:facet name="header">Descricao</f:facet>
<h:outputText value="${item.descricao}"/>
</rich:column>
</rich:scrollableDataTable>
</h:panelGroup>
</td>
<td width="200" valign="top">
<rich:panel>
<f:facet name="header">
Resumo
</f:facet>
</rich:panel>
</td>
</tr>
</table>
</h:form>
</f:view>
</html>
package com.mb.managerbean;
import com.mb.entitybean.Pedido;
import com.mb.mediator.PedidoMediator;
public class PedidoMB
{
private Pedido pedido = new Pedido();
private PedidoMediator pedidoMediator = new PedidoMediator();
public PedidoMB()
{
pedidoMediator.LoadItens();
}
public void atualizaPedido()
{
}
public Pedido getPedido()
{
return pedido;
}
public void setPedido(Pedido pedido)
{
this.pedido = pedido;
}
public PedidoMediator getPedidoMediator()
{
return pedidoMediator;
}
public void setPedidoMediator(PedidoMediator pedidoMediator)
{
this.pedidoMediator = pedidoMediator;
}
}
package com.mb.mediator;
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.List;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import javax.faces.model.SelectItem;
import com.mb.entitybean.Item;
import com.mb.entitybean.ItemMenu;
public class PedidoMediator
{
private List<ItemMenu> itensMenu = new ArrayList<ItemMenu>();
private DataModel itensMenuModel;
private Hashtable<String, ItemMenu> itensMenuMap;
private List itensMenuCombo;
private List<Item> itens = new ArrayList<Item>();
private Hashtable<String, Item> itensMap;
public void LoadItens()
{
ItemMenu itemMenu = new ItemMenu();
itemMenu.setCodigo("7");
itemMenu.setDescricao("Big Mac");
itemMenu.setQuantidade(80);
Item item = new Item();
item.setCodigo("00001-001");
item.setDescricao("Carne Regular");
item.setQuantidadeformula(2);
item.setQuantidadetotal(160);
itemMenu.getItens().put(item.getCodigo(), item);
item = new Item();
item.setCodigo("00002-002");
item.setDescricao("Pao Regular");
item.setQuantidadeformula(1);
item.setQuantidadetotal(80);
itemMenu.getItens().put(item.getCodigo(), item);
itensMenu.add(itemMenu);
itemMenu = new ItemMenu();
itemMenu.setCodigo("12");
itemMenu.setDescricao("Cheese Burger");
itemMenu.setQuantidade(20);
item = new Item();
item.setCodigo("00001-001");
item.setDescricao("Carne Regular");
item.setQuantidadeformula(1);
item.setQuantidadetotal(20);
itemMenu.getItens().put(item.getCodigo(), item);
item = new Item();
item.setCodigo("00002-002");
item.setDescricao("Pao Regular");
item.setQuantidadeformula(1);
item.setQuantidadetotal(20);
itemMenu.getItens().put(item.getCodigo(), item);
itensMenu.add(itemMenu);
item = new Item();
item.setCodigo("00001-001");
item.setDescricao("Carne Regular");
item.setQuantidadeformula(1);
item.setQuantidadetotal(180);
itens.add(item);
item = new Item();
item.setCodigo("00002-002");
item.setDescricao("Pao Regular");
item.setQuantidadeformula(1);
item.setQuantidadetotal(100);
itens.add(item);
updateCollectionsItens();
}
public void updateCollectionsItens()
{
this.itensMenuModel = new ListDataModel(itensMenu);
itensMenuCombo = new ArrayList();
itensMenuMap = new Hashtable<String, ItemMenu>();
for (ItemMenu itemMenu : itensMenu)
{
itensMenuCombo.add(new SelectItem(itemMenu, itemMenu.getCodigo()));
itensMenuMap.put(itemMenu.getCodigo(), itemMenu);
}
itensMap = new Hashtable<String, Item>();
for (Item item: itens)
itensMap.put(item.getCodigo(), item);
}
public void atualizaPedido()
{
for (Item item: itens)
{
item.setQuantidadetotal(0);
itensMap.put(item.getCodigo(), item);
}
for (ItemMenu itemmenu: itensMenu)
{
for (Item item: itemmenu.getItens().values())
{
Item it = itensMap.get(item.getCodigo());
it.setQuantidadetotal(it.getQuantidadetotal() + item.getQuantidadetotal());
}
}
}
public List<ItemMenu> getItensMenu()
{
return itensMenu;
}
public DataModel getItensMenuModel()
{
return itensMenuModel;
}
public Hashtable<String, ItemMenu> getItensMenuMap()
{
return itensMenuMap;
}
public List getItensMenuCombo()
{
return itensMenuCombo;
}
public List<Item> getItens()
{
return itens;
}
}
package com.mb.entitybean;
public class Item
{
private String codigo;
private String descricao;
private double quantidadeformula;
private double quantidadetotal;
(...) get's e set's (..)
}
package com.mb.entitybean;
import java.util.HashMap;
public class ItemMenu
{
private String codigo;
private String descricao;
private double quantidade;
private HashMap<String, Item> itens = new HashMap<String, Item>();
(...) get's e set's (..)
}
package com.mb.entitybean;
import java.util.HashMap;
public class Pedido
{
private int numero;
private HashMap<String, ItemMenu> Itens;
(...) get's e set's (..)
}
Valeu a todos!!!
Adriano.
