Erro de Width com RichFaces

2 respostas
Adriano_Crespo

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

JSF:
<!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>
MB:
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;
	}
	
	
}
Mediator:
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;
	}

}
Entity's
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.

2 Respostas

Adriano_Crespo

Oi Pessoas…
Ninguem teve problemas assim??
Precisaria de uma solução meio urgente… Meu diretor precisa ver a tela… To frito!!! :?

Abraços.

Adriano_Crespo

:cry:

Criado 24 de abril de 2008
Ultima resposta 30 de abr. de 2008
Respostas 2
Participantes 1