[RESOLVIDO] erro com dataTable - JSF

10 respostas
T

Recebo uma lista do meu método mas ele não consegue exibir…alguém sabe o q pode ser esse erro???

<h:dataTable border="1" value="#{fornecedorHandler.fornecedores}" var="f">

				<h:column>
					<f:facet name="header">
						<h:outputText value="Id" />
					</f:facet>
					<h:outputText value="#{f.nome}" />
				</h:column>
				
				<h:column>
					<f:facet name="header">
						<h:outputText value="Nome" />
					</f:facet>
					<h:outputText value="#{f.nome}" />
				</h:column>
				
				<h:column>
					<f:facet name="header">
						<h:outputText value="Descrição" />
					</f:facet>
					<h:outputText value="#{f.descricao}" />
				</h:column>
				
			</h:dataTable>
An error occurred at line: 16 in the jsp file: /lista.jsp

The method setVar(String) in the type DataTableTag is not applicable for the arguments (JspValueExpression)

13: 

14: 	<f:subview id=lista>

15: 		<h:form>

16: 			<h:dataTable border=1 value="#{fornecedorHandler.fornecedores}" var=f>

17:

18: 				<h:column>

19: 					<f:facet name=header>

10 Respostas

Javabuntu

você já tem uma taglib do JSF Core definida como “f”:

<f:facet name="header">   
                        <h:outputText value="Id" />   
                    </f:facet>

<f:view/> etc…

então mude o valor do var da sua dataTable, coloque list, fList sei lá, como quiser, apenas não use o prefix “f” de uma taglib declarada :roll:

<h:dataTable border="1" value="#{fornecedorHandler.fornecedores}" var="MUDAR O  VALOR AQUI">
T

também acreditei ser isso, mas não deu em nada…mudei pra fList, mesmo assim o erro persiste…

Javabuntu

posta seu código completo ai do jsp

T
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Sistemas de Contas a pagar</title>
</head>
<body>
	<f:subview id="lista">
		<h:form>
			<h:dataTable border="1" value="#{fornecedorHandler.fornecedores}" var="fList">

				<h:column>
					<f:facet name="header">
						<h:outputText value="Id" />
					</f:facet>
					<h:outputText value="#{fList.nome}" />
				</h:column>
				
				<h:column>
					<f:facet name="header">
						<h:outputText value="Nome" />
					</f:facet>
					<h:outputText value="#{fList.nome}" />
				</h:column>
				
				<h:column>
					<f:facet name="header">
						<h:outputText value="Descrição" />
					</f:facet>
					<h:outputText value="#{fList.descricao}" />
				</h:column>
				
			</h:dataTable>
		</h:form>
	</f:subview>
</body>
</html>

tentei fazer isso e funcionou, tirei o var e coloquei a posição direta da lista:

<h:dataTable border="1" value="#{fornecedorHandler.fornecedores}" >

				<h:column>
					<f:facet name="header">
						<h:outputText value="Id" />
					</f:facet>
					<h:outputText value="#{fList.id}" />
				</h:column>
				
				<h:column>
					<f:facet name="header">
						<h:outputText value="Nome" />
					</f:facet>
					<h:outputText value="#{fornecedorHandler.fornecedores[0].nome}" />
				</h:column>
				
				<h:column>
					<f:facet name="header">
						<h:outputText value="Descrição" />
					</f:facet>
					<h:outputText value="#{fList.descricao}" />
				</h:column>
				
			</h:dataTable>
Javabuntu

estranho não funcionar, mas esse seu jsp, onde vc declarou as taglibs f e h do JSF ?

no seu jsp não tem nada, esse aí é o completo mesmo?

essa página está incluída em outra? caso contrário não precisa de <f:subview>

G

cara, vc colocou a assinatua do seu metodo que retorna todos os fornecedores com …getFornecedores(){…}, no seu Beans.

T

eu tenho a main que inclui essa lista…adiciono na main.jsp e já vai listando na lista.jsp

MAIN.JSP

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Sistema de Contas a Pagar</title>
</head>
<body>

	<f:view>
		Bem vindo <h:outputText value="#{autenticador.login}" />
		
		<h:form id="cadastro">
			nome:<br/>
			<h:inputText value="#{fornecedorHandler.fornecedor.nome}" /><br/>
			descricao:<br/>
			<h:inputTextarea value="#{fornecedorHandler.fornecedor.descricao}" /><br/>
			<h:commandButton value="Salvar" action="#{fornecedorHandler.salva}" />
		</h:form>
		<jsp:include page="/lista.jsp" />
		
	</f:view>
	
</body>
</html>

LISTA.JSP

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Sistemas de Contas a pagar</title>
</head>
<body>
	<f:subview id="lista">
		<h:form>
			<h:dataTable border="1" value="#{fornecedorHandler.fornecedores}" var="fList">

				<h:column>
					<f:facet name="header">
						<h:outputText value="Id" />
					</f:facet>
					<h:outputText value="#{fList.id}" />
				</h:column>
				
				<h:column>
					<f:facet name="header">
						<h:outputText value="Nome" />
					</f:facet>
					<h:outputText value="#{fList.nome}" />
				</h:column>
				
				<h:column>
					<f:facet name="header">
						<h:outputText value="Descrição" />
					</f:facet>
					<h:outputText value="#{fList.descricao}" />
				</h:column>
				
			</h:dataTable>
		</h:form>
	</f:subview>
</body>
</html>

FORNECEDORHANDLER.JAVA

public class FornecedorHandler {
	
	private Fornecedor fornecedor = new Fornecedor();
	private List<Fornecedor> fornecedores = new ArrayList<Fornecedor>();
	private long count = 0L;
	
	
	public String salva(){
		System.out.println("Adicionando: " + fornecedor.getNome());
		this.fornecedor.setId(++count);
		this.fornecedores.add(fornecedor);
		this.fornecedor = new Fornecedor();
		return "sucesso";
	}
	
	
	
	public Fornecedor getFornecedor() {
		return fornecedor;
	}
	
	public List<Fornecedor> getFornecedores() {
		System.out.println("Lendo fornecedores #" + fornecedores.size());
		return fornecedores;
	}
	
	public long getCount() {
		return count;
	}
	
}
Javabuntu

dê uma olhada aqui
http://www.guj.com.br/posts/list/88998.java#475954

T

éh, parece q não foi só eu q tive esse problema…vlw !!!1

T

lendo o link do nosso amigo JavaBuntu, troquei o H pelo RICH…no lista.jsp…funcionou…

Criado 26 de novembro de 2008
Ultima resposta 26 de nov. de 2008
Respostas 10
Participantes 3