Session injetada no Dao - The value for the useBean class attribute ... is invalid

Boa noite pessoal do fórum, estou com um problema de IoC em uma JSP. Eu tenho as seguintes classes em meu projeto:

[code]public class Item{

 //atributos e métodos da classe

}

public class GrupoDao {

private final Session session;

public GrupoDao(Session s) {

	this.session = s;
}

    //métodos do DAO

}

[/code]

O problema é quando eu tenho que atualizar um ITEM. O meu ItemController retorna para view o ITEM a ser editado, até ai tudo bem, mas
só que nessa view eu tenho um SELECT que eu fazia assim para preenche-lo:

[code]Grupo:

	<!-- cria a lista -->
	<jsp:useBean id="dao" class="br.com.dao.GrupoDao"/>
	<c:forEach var="grupo" items="${dao.lista}">
		<option value="${grupo.id_grupo}">${grupo.desc_grupo}</option>
	</c:forEach>
	</select>[/code]

Só que dessa forma forma eu tenho o seguinte erro:

org.apache.jasper.JasperException: /WEB-INF/jsp/item/edita.jsp (line: 32, column: 2) The value for the useBean class attribute br.com.dao.GrupoDao is invalid.

Eu não tinha esse problema até passar a receber a Session no construtor do GrupoDao (eu segui o exemplo da apostila f-28 da Caelum). Quando a Session
não era injetada no construtor o código acima funcionava, pois obedecia o critério do bean (construtor sem argumentos). Como eu faço pra contornar esse problema??
Tem como o Vraptor retornar mais de um objeto para a view (ele já retorna o item a ser editado)???

Obrigado desde já,

Jonh

Você precisar ter um construtor default sem argumentos. Tenta aí.

Se eu criar um construtor padrão (sem argumentos) eu vou ter outro erro:

[code]org.apache.jasper.el.JspELException: /WEB-INF/jsp/item/edita.jsp(33,2) ‘${dao.lista}’ Error reading ‘lista’ on type br.com.dao.GrupoDao
org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:112)
org.apache.jsp.WEB_002dINF.jsp.item.edita_jsp._jspx_meth_c_005fforEach_005f0(edita_jsp.java:238)
org.apache.jsp.WEB_002dINF.jsp.item.edita_jsp._jspService(edita_jsp.java:131)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:433)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
br.com.caelum.vraptor.core.DefaultStaticContentHandler.deferProcessingToContainer(DefaultStaticContentHandler.java:64)

   ....

    java.lang.NullPointerException
br.com.dao.GrupoDao.getLista(GrupoDao.java:46)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
javax.el.BeanELResolver.getValue(BeanELResolver.java:87)
javax.el.CompositeELResolver.getValue(CompositeELResolver.java:67)
org.apache.el.parser.AstValue.getValue(AstValue.java:169)
org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:189)
org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:106)
org.apache.jsp.WEB_002dINF.jsp.item.edita_jsp._jspx_meth_c_005fforEach_005f0(edita_jsp.java:238)
org.apache.jsp.WEB_002dINF.jsp.item.edita_jsp._jspService(edita_jsp.java:131)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)[/code]

Isso porque a Session não está injetada na classe GrupoDao.

Sim, mas geralmente a injeção não é feita pelo contrutor (a não ser que o Spring faça isso).

Vc está usando qual framework?

Eu uso o VRaptor, que por sua vez usa Spring para gerenciar dependências.

E é assim que os valores são injetados? Pelos construtores? Não tem anotações ou xml?