Olá pessoal estou com probleminha aqui em um parametro da minha tagFile.Eu criei uma jsp e quando eu mando imprir o código do meu objeto, ele imprime normal ex:
${empresa.status.id}esta linha de código imprime o número 1, corretamente.
Depois eu chamo umas tagFile minha ex.:
<cmbStatus:gerarCombo valorDefault="1" nome="empresa.status.id" />Até aqui sem problemas, ele gera uma combo com o item 1 selecionado.
agora quando eu passo o retorno do meu objeto para minha tagFile, da erro. ex.:
<cmbStatus:gerarCombo valorDefault="${empresa.status.id}" nome="empresa.status.id" />Não sei o que fazer, pois quando eu fasso os testes com o retorno dos meus objetos ele da erro, lembrando que os tipos dos são iguais.
segue o erro
type Exception report message description The server encountered an internal error () that prevented it from fulfilling this request. exception javax.servlet.ServletException: /empresa/load.ok.jsp(14,3) According to TLD or attribute directive in tag file, attribute valorDefault does not accept any expressions org.vraptor.VRaptorServlet.service(VRaptorServlet.java:71) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) root cause org.apache.jasper.JasperException: /empresa/load.ok.jsp(14,3) According to TLD or attribute directive in tag file, attribute valorDefault does not accept any expressions org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:39) org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:405) org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:146) org.apache.jasper.compiler.Validator$ValidateVisitor.checkXmlAttributes(Validator.java:955) org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:710) org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1441) org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163) org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2213) org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2219) org.apache.jasper.compiler.Node$Root.accept(Node.java:456) org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163) org.apache.jasper.compiler.Validator.validate(Validator.java:1489) org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:157) org.apache.jasper.compiler.Compiler.compile(Compiler.java:286) org.apache.jasper.compiler.Compiler.compile(Compiler.java:267) org.apache.jasper.compiler.Compiler.compile(Compiler.java:255) org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:563) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:293) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) org.vraptor.view.RegexViewManager.directForward(RegexViewManager.java:61) org.vraptor.view.RegexViewManager.forward(RegexViewManager.java:53) org.vraptor.interceptor.ViewInterceptor.intercept(ViewInterceptor.java:36) org.vraptor.core.BasicLogicFlow.execute(BasicLogicFlow.java:98) org.vraptor.interceptor.OutjectionInterceptor.intercept(OutjectionInterceptor.java:49) org.vraptor.core.BasicLogicFlow.execute(BasicLogicFlow.java:98) org.vraptor.interceptor.ExecuteLogicInterceptor.intercept(ExecuteLogicInterceptor.java:62) org.vraptor.core.BasicLogicFlow.execute(BasicLogicFlow.java:98) org.vraptor.interceptor.SettingAndValidationInterceptor.intercept(SettingAndValidationInterceptor.java:92) org.vraptor.core.BasicLogicFlow.execute(BasicLogicFlow.java:98) org.vraptor.interceptor.InjectionInterceptor.intercept(InjectionInterceptor.java:49) org.vraptor.core.BasicLogicFlow.execute(BasicLogicFlow.java:98) org.vraptor.interceptor.ComponentLookupInterceptor.intercept(ComponentLookupInterceptor.java:33) org.vraptor.core.BasicLogicFlow.execute(BasicLogicFlow.java:98) org.vraptor.core.VRaptorExecution.execute(VRaptorExecution.java:70) org.vraptor.core.VRaptorController.execute(VRaptorController.java:72) org.vraptor.VRaptorServlet.service(VRaptorServlet.java:56) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) note The full stack trace of the root cause is available in the Apache Tomcat/5.5.12 logs. Apache Tomcat/5.5.12
Erro com TagFile
12 Respostas
parece que o problema esta na definição da tua Tag File …
pode colocar o cabeçalho dela aqui pra nois?
package br.com.conseda.taglib;
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
import org.hibernate.Session;
import br.com.conseda.DAO.EmpresaDAO;
import br.com.conseda.factory.ConnectionFactory;
import br.com.conseda.modelo.empresa.Empresa;
public class ComboEmpresa extends TagSupport {
/**
*
*/
private static final long serialVersionUID = 6776224940174259770L;
protected String nome;
protected String classStyle;
protected String style;
protected Long valorDefault;
public String getClassStyle() {
return classStyle;
}
public void setClassStyle(String classStyle) {
this.classStyle = classStyle;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getStyle() {
return style;
}
public void setStyle(String style) {
this.style = style;
}
public Long getValorDefault() {
return valorDefault;
}
public void setValorDefault(Long valorDefault) {
this.valorDefault = valorDefault;
}
public int doStartTag() throws JspException {
JspWriter out = pageContext.getOut();
try {
out.println("<select name=\"" + this.nome + "\" class=\"" + this.classStyle + "\" style=\"" + this.style + "\">");
out.println(" <option value=\"\">Selecione</option>");
//Pega uma sessão do valida
Session session = new ConnectionFactory().getSession();
//Estancia um objeto DAO empresa
EmpresaDAO dao = new EmpresaDAO(session);
//Percorre todos os objetos listados
for(Empresa empresa: dao.listaTudo()) {
//Verifica se o id informado é igual ao do objeto atual
//e marca como selecionado
if(empresa.getId() == this.valorDefault) {
out.println("<option selected value=\"" + empresa.getId() + "\">" + empresa.getNome() + "</option>");
}else {
out.println("<option value=\"" + empresa.getId() + "\">" + empresa.getNome() + "</option>");
}
}
out.println("</select>");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return SKIP_BODY;
}
public int doEndTag()
{
return EVAL_PAGE;
}
}
bom, isto não é uma tagfile.
tagfile é um arquivo .tag que se usa a mesma sintaxe do JSP 
neste caso preciso é do teu TLD pra saber o motivo daquele erro 
ops… .heheh
desculpa a gaf…
<?xml version="1.0"?>
<!DOCTYPE taglib PUBLIC
"-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"
"http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
<taglib>
<tlibversion>1.0</tlibversion>
<jspversion>1.1</jspversion>
<shortname>comboEmpresa</shortname>
<uri>http://bdvl.conseda.com.br/jstl/Empresa</uri>
<info>Combo de Empresas</info>
<tag>
<name>gerarCombo</name>
<tagclass>br.com.conseda.taglib.ComboEmpresa</tagclass>
<attribute>
<name>nome</name>
<required>no</required>
</attribute>
<attribute>
<name>classStyle</name>
<required>no</required>
</attribute>
<attribute>
<name>style</name>
<required>no</required>
</attribute>
<attribute>
<name>valorDefault</name>
<required>no</required>
</attribute>
</tag>
</taglib>
seguinte, paece que o problema é:
o teu web.xml ta informando que tu vai usar j2ee 2.4
a tua taglib é versão 1.1
de vez em quando da conflito deste tipo 
tem uma solução absurda que as vezes funciona …
na declaração na JSP do
<%@ taglib prefix="" uri="" %>
troca a ordem do prefix e da URI
se isto não funcionar, muda o DTD do teu TLD pra este: http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd
que é o DTD para taglibs compativeis com JSP 2.0 
Puts cara o erro ainda continua, quando passo o valor na mão ele vai, mas quando passo o objeto ele continua com o erro.
Isto da erro
<cmbStatus:gerarCombo valorDefault="${empresa.ativo.id}" nome="empresa.ativo.id" classStyle="" style="WIDTH: 130px"/>
isto não dá
<cmbStatus:gerarCombo valorDefault="1" nome="empresa.ativo.id" classStyle="" style="WIDTH: 130px"/>
Porém o valor de ${empresa.ativo.id} esta retornando 1.
alterei o cabeçalho da minha jsp como indicado
<%@ taglib prefix="cmbStatus" uri="http://bdvl.conseda.com.br/jstl/Status" %>
alterei a DTD da minha tld
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE taglib
PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>
.
.
.
E não fasso idéia do que fazer para resolver este problema.
Erro.
HTTP Status 500 -
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: /empresa/load.ok.jsp(14,3) According to TLD or attribute directive in tag file, attribute valorDefault does not accept any expressions
org.vraptor.VRaptorServlet.service(VRaptorServlet.java:71)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause
org.apache.jasper.JasperException: /empresa/load.ok.jsp(14,3) According to TLD or attribute directive in tag file, attribute valorDefault does not accept any expressions
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:39)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:405)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:146)
org.apache.jasper.compiler.Validator$ValidateVisitor.checkXmlAttributes(Validator.java:955)
org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:710)
org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1441)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163)
org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2213)
org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2219)
org.apache.jasper.compiler.Node$Root.accept(Node.java:456)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163)
org.apache.jasper.compiler.Validator.validate(Validator.java:1489)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:157)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:286)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:267)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:255)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:563)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:293)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.vraptor.view.RegexViewManager.directForward(RegexViewManager.java:61)
org.vraptor.view.RegexViewManager.forward(RegexViewManager.java:53)
org.vraptor.interceptor.ViewInterceptor.intercept(ViewInterceptor.java:36)
org.vraptor.core.BasicLogicFlow.execute(BasicLogicFlow.java:98)
org.vraptor.interceptor.OutjectionInterceptor.intercept(OutjectionInterceptor.java:49)
org.vraptor.core.BasicLogicFlow.execute(BasicLogicFlow.java:98)
org.vraptor.interceptor.ExecuteLogicInterceptor.intercept(ExecuteLogicInterceptor.java:62)
org.vraptor.core.BasicLogicFlow.execute(BasicLogicFlow.java:98)
org.vraptor.interceptor.SettingAndValidationInterceptor.intercept(SettingAndValidationInterceptor.java:92)
org.vraptor.core.BasicLogicFlow.execute(BasicLogicFlow.java:98)
org.vraptor.interceptor.InjectionInterceptor.intercept(InjectionInterceptor.java:49)
org.vraptor.core.BasicLogicFlow.execute(BasicLogicFlow.java:98)
org.vraptor.interceptor.ComponentLookupInterceptor.intercept(ComponentLookupInterceptor.java:33)
org.vraptor.core.BasicLogicFlow.execute(BasicLogicFlow.java:98)
org.vraptor.core.VRaptorExecution.execute(VRaptorExecution.java:70)
org.vraptor.core.VRaptorController.execute(VRaptorController.java:72)
org.vraptor.VRaptorServlet.service(VRaptorServlet.java:56)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.12 logs.
Apache Tomcat/5.5.12
Ta fogo… ehehehe
tenta limpar o cache do tomcat 
Puts…
ta treta não funciona de maneira alguma.
alguém tem mais alguma sujestão ??
Abrigado.
Essa seria a minha sugestao tambem. Apaga o diretorio work/org do seu projeto e tenta denovo.
Fora isso, o erro é claro: seu atributo valorDefault não aceita expressões do tipo expression language.
Note que o valor passado que funciona não é EL e o que não funciona é EL. Por exemplo: valorDefault="${1}" não vai funcionar.
O que fazer então?
- Verificar que o web.xml realmente diz estar usando servlet api 2.4.
- Se nao me engano, no tld voce pode falar quais atributos aceitam EL e quais nao (aprendi pra certificacao mas nao lembro), da uma olhada na especificacao de JSP que com certeza vai te falar isso…
Opá, muito obrigado pela ajuda olhei a especificação e tem uma tag na tld que indica que não haverá validação em runtime
<rtexprvalue>true</rtexprvalue>
Além de ter uma tag que indica qual o tipo do atributo
<type>java.util.Date</type>
Obrigado pela atenção.
Ola…
apesar do tópico ser antigo…
eu estava com o mesmo problema…
soh q no meu caso estou a utilizar JEE 5…
nao tive q alterar nada no meu web.xml nem em tld…
na declaracao do meu jsp ao inves de
<%@ taglib prefix=“c” uri=“http://java.sun.com/jstl/core” %>
aterar para…
<%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>
Humbertim2
Eu tava com esse probleminha agorinha e mais uma vez, atravez de GUJ e da ajuda do pessoal consegui resolver também.
Obrigado a todos.
Abraços