Popular select multi-valorado usando Vraptor 3

Olá pessoal,

Estou escrevendo um sistema onde tenho um controller do VRaptor que possui uma lista de UserAccount. Essa lista contém todos os UserAccounts
de um sistema e preciso exibi-lá em select multi-valorado para que o usuário sejá capaz de associar os UserAccounts com o cadastro de um documento.

A parte que estou encontrando dificuldade é em criar a tag SELECT no meu jsp de modo que o Vraptor à popule para mim com os valores da lista supracitada.

Esse é o meu arquivo jsp:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
	<head>
		<title>Release Notes System </title>
         ...	
	</head>

        <body>

	<div id="container">
		
                  <jsp:include page="../common/menu.jsp"></jsp:include>
			
	          <div id="content">
       
                  <form action="<c:url value='/releaseDocument/addReleaseDocument'/>" method="post">
			
    		   <table>
    				
    			  <tr>
    				   <td valign="top"  width="200">
                                               Developers
                                   </td>
    				   <td>
    				               <select name="releaseDocument.listUserAcount" id="releaseDocument.listUserAcount" multiple="multiple">  
                                                      <c:forEach var="userAccount" items="${listUserAcount}">  
                                                            <option value="${userAccount.idUserAccount}" ${selected}>${userAccount.name}</option>  
                                                      </c:forEach>  
                                              </select>   
    				   </td>
    			   </tr>
    		
    		    </table>
    				
	            </form>   
	</div>
</div>
</body>
</html>

E aqui está o código do meu controller:

@Resource
public class ReleaseDocumentController {

	private final Logger logger = Logger.getLogger(ReleaseDocumentController.class);
	private final UserAccountDao userAccountDao;
	private Result result;
	
	[b]private List<UserAccount> listUserAccount;[/b] //essa é a lista que deve ser exibida na view
	
	public ReleaseDocumentController(DaoFactory daoFactory, Result result) {
		this.userAccountDao = daoFactory.getUserAccountDao();
		this.result = result;
	}

	public List<ReleaseDocument> listReleaseDocument() {
		List<ReleaseDocument> list = releaseDocumentDao.findAll();
		return list;
	}
	
	public void formAdd(){
		[b]this.listUserAccount = userAccountDao.findAll(); [/b]  //nesse ponto eu populo a lista e o formAdd.jsp é chamado
		logger.trace("Invoked Method -> ReleaseDocumentController::formAdd");
	}
	
	public void addReleaseDocument(Strint[] listUserAcount){
                //nesse ponto eu deveria receber a lista com os UsserAccts que o usuário selecionou no formulário
		releaseDocumentDao.save(releaseDocument);
	}

	public List<UserAccount> getListUserAccount() {
		return listUserAccount;
	}

	public void setListUserAccount(List<UserAccount> listUserAccount) {
		this.listUserAccount = listUserAccount;
	}

}

Vejam que na tag <select name=“listUserAccount” id=“listUserAccount” multiple=“multiple”> eu utilizei o mesmo
nome da lista da minha action.

Alguem saberia me informar se estou no caminho certo?

baixe o último snapshot do vraptor:
http://oss.sonatype.org/content/repositories/snapshots/br/com/caelum/vraptor/3.1.3-SNAPSHOT/vraptor-3.1.3-20100607.234700-8.jar

e use como nome do select:

listUserAccount[].id

vc pode dar qqer outro nome pra essa lista, não precisa ser listUserAccount, vc só tem que usar o mesmo nome no select e no parametro do método

Olá Lucas! Obrigado pela dica.

Fiz como vc disse, baixei essa versão do VRaptor (3.1.3-20100607.234700-8.jar) substitui o o vraptor3.1.2.jar que eu estava usando por ele e tambem mude o nome e ID do select como
voc citou, porem, ainda estou recebendo uma lista em branco.

Aqui está o html gerado

&lt;select name="listUserAccount[].id" id="listUserAccount[].id" multiple="multiple"&gt;  
&lt;/select&gt;

Será que a minha lista está sendo disponibilizada corretamente no controller? No Struts2 eu uso o método prepare() da interface Preparable para carregar as minhas listas antes da minha página ser renderizada, porem, no VRaptor não sei se existe algo parecido.

Será que esse é o problema?

o VRaptor não popula os parametros por setters!

vc recebe o parâmetro direto no método da lógica mesmo:

public void minhaLogica(List<UserAccount> listUserAccount) {
   ...
}

Sim Lucas, mas o problema aqui é o inverso. Eu tenho a lista populada no meu controller. Porem os dados dessa lista não estão aparecendo no meu JSP.

O metodo que eu chamo e que direciona para o formulario onde eu preciso exibir a lista é esse:

public  void formAdd(){  
         this.listUserAccount = userAccountDao.findAll(); //nesse ponto eu populo a lista e o formAdd.jsp é chamado  
         logger.trace(&quot;Invoked Method -&gt; ReleaseDocumentController::formAdd&quot;);  
}  

seria o caso se eu adicionar a seguinte modificação?

public  void formAdd(List&lt;UserAccount&gt; listUserAccount){  
         listUserAccount = userAccountDao.findAll(); //nesse ponto eu populo a lista e o formAdd.jsp é chamado  
         logger.trace(&quot;Invoked Method -&gt; ReleaseDocumentController::formAdd&quot;);  
}  

O vraptor exporta os objetos via result.include ou via retorno do método; ao contrário do struts2 que exporta via atributos com setters.

public void formAdd(){ result.include("listUserAccount", userAccountDao.findAll()); //nesse ponto eu populo a lista e o formAdd.jsp é chamado logger.trace("Invoked Method -> ReleaseDocumentController::formAdd"); }

Funcionou perfeitamente Pbragado pela ajuda pessoal!

Pessoal, descobri um outro problema aqui.

Já vi ele em outra thread aqui porem oq foi dito lá não resolveu meu problema então vou postar aqui.

Como visto nas mensagens acima, eu consegui exibir os dados do meu controller para o meu JSP. Só que agora preciso do inverso. Baseado nos IDs que o usuário

marcar no SELECT multiple do meu JSP eu preciso que o VRaptor injete no meu metodo uma lista com os IDs selecionados, ou mesmo se possível os objetos UserAcct instanciados… isso seria possivel com o VRaptor?

Aqui está o meu JSP:

&lt;select name="developersList[].id" id="developersList[].id" multiple="multiple" style="width: 300px"&gt;  
                                 &lt;c:forEach var="userAccount" items="${listDevelopers}"&gt;  
                                     &lt;option value="${userAccount.idUserAccount}"&gt;${userAccount.name}&lt;/option&gt;  
                                 &lt;/c:forEach&gt;  
                       &lt;/select&gt;

Arqui está o metodo do controller:


public void addReleaseDocument(ReleaseDocument releaseDocument, List&lt;String&gt; developersList){
		logger.trace("Developers: " + developersList.size());
		...
	}

Estou usando essa versão do VR http://oss.sonatype.org/content/repositories/snaps...or-3.1.3-20100607.234700-8.jar

alguma pista?

só receber uma List chamada developersList no método (vc pode chamar do q vc quiser, de qqer forma)

Mesmo o meu UserAccount.java não sendo anotado como @Component?

sim =)

o @Component é só pra dependências… que vc recebe no construtor das classes e que precisam ser gerenciados pelo VRaptor…

para parâmetros de lógicas pode ser qqer classe… (desde que tenha um construtor padrão ou um converter)

Não funcionou Lucas.

o html gerado pelas taglibs ficou assim:

&lt;tr&gt;
    				   &lt;td valign="top"  width="200"&gt;Developers&lt;/td&gt;
    				   &lt;td&gt;
    				   
    				   &lt;select name="developersList[].id" id="developersList[].id" multiple="multiple" style="width: 300px"&gt;  
                                   
                                     &lt;option value="2         "&gt;2                                                 &lt;/option&gt;  
                                   
                                     &lt;option value="1         "&gt;1                                                 &lt;/option&gt;  
                                   
                       &lt;/select&gt;

porem vejo essa exception nos logs do VRaptor:


DEBUG 2010-06-28 22:49:16,796 [WebContainer : 0] br.com.caelum.vraptor.http.ognl.OgnlParametersProvider: (157) unable to parse expression 'developersList[].id'
ognl.ExpressionSyntaxException: Malformed OGNL expression: developersList[].id [ognl.ParseException: Encountered " "]" "] "" at line 1, column 16.
Was expecting one of:
    ":" ...
    "not" ...
    "+" ...
    "-" ...
    "~" ...
    "!" ...
    "(" ...
    "true" ...
    "false" ...
    "null" ...
    "#this" ...
    "#root" ...
    "#" ...
    "[" ...
    "{" ...
    "@" ...
    "new" ...
    &lt;IDENT&gt; ...
    &lt;DYNAMIC_SUBSCRIPT&gt; ...
    "\'" ...
    "`" ...
    "\"" ...
    &lt;INT_LITERAL&gt; ...
    &lt;FLT_LITERAL&gt; ...
    ]
        at ognl.Ognl.parseExpression(Ognl.java:112)
        at ognl.Ognl.setValue(Ognl.java:783)
        at br.com.caelum.vraptor.http.ognl.OgnlParametersProvider.createViaOgnl(OgnlParametersProvider.java:132)
        at br.com.caelum.vraptor.http.ognl.OgnlParametersProvider.createRoot(OgnlParametersProvider.java:108)
        at br.com.caelum.vraptor.http.ognl.OgnlParametersProvider.getParametersFor(OgnlParametersProvider.java:90)
        at br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.getParametersFor(ParametersInstantiatorInterceptor.java:83)
        at br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:68)
        at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
        at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
        at br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:42)
        at br.com.caelum.vraptor.core.InstantiatedInterceptorHandler.execute(InstantiatedInterceptorHandler.java:47)
        at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
        at br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:46)
        at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
        at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
        at br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:80)
        at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
        at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
        at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67)
        at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
        at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
        at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
        at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
        at br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:70)
        at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
        at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56)
        at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)
        at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190)
        at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:130)
        at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:87)
        at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:837)
        at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:747)
        at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:700)
        at com.ibm.ws.wswebcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:115)
        at com.ibm.ws.webcontainer.extension.DefaultExtensionProcessor.invokeFilters(DefaultExtensionProcessor.java:849)
        at com.ibm.ws.webcontainer.extension.DefaultExtensionProcessor.handleRequest(DefaultExtensionProcessor.java:785)
        at com.ibm.ws.wswebcontainer.extension.DefaultExtensionProcessor.handleRequest(DefaultExtensionProcessor.java:113)
        at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3507)
        at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:269)
        at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:815)
        at com.ibm.ws.wswebcontainer.WebContainer.handleRequest(WebContainer.java:1466)
        at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:122)
        at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:458)
        at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:387)
        at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:267)
        at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214)
        at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113)
        at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
        at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
        at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
        at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:136)
        at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:196)
        at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:751)
        at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:881)

        ...

        DEBUG 2010-06-28 22:49:16,843 [WebContainer : 0] br.com.caelum.vraptor.http.ParanamerNameProvider: (50) Found parameter names with paranamer for                  ReleaseDocumentController.addReleaseDocument(ReleaseDocume
nt, List, List, List, List) as [releaseDocument, emailTo, emailCc, developersList, reviewersList]
DEBUG 2010-06-28 22:49:16,843 [WebContainer : 0] br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor: (73) Parameter values for [DefaultResourceMethod: ReleaseDocumentController.addReleas
eDocumentReleaseDocumentController.addReleaseDocument(ReleaseDocument, List, List, List, List)] are [com.ibm.releasenotes.model.ReleaseDocument@cdaa61c1, null, null, null, null]
DEBUG 2010-06-28 22:49:16,937 [WebContainer : 0] br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler: (53) Invoking interceptor ExecuteMethodInterceptor
DEBUG 2010-06-28 22:49:16,953 [WebContainer : 0] br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor: (56) Invoking ReleaseDocumentController.addReleaseDocument(ReleaseDocument, List, List, List,
List)
DEBUG 2010-06-28 22:50:09,531 [WebContainer : 0] br.com.caelum.vraptor.VRaptor: (82) VRaptor received a new request
DEBUG 2010-06-28 22:50:09,625 [WebContainer : 0] br.com.caelum.vraptor.core.DefaultRequestExecution: (57) executing stack  DefaultRequestExecution
DEBUG 2010-06-28 22:50:09,687 [WebContainer : 0] br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler: (53) Invoking interceptor ResourceLookupInterceptor
DEBUG 2010-06-28 22:50:09,703 [WebContainer : 0] br.com.caelum.vraptor.http.DefaultResourceTranslator: (50) trying to access /images/content_bg_tiled.png
DEBUG 2010-06-28 22:50:09,718 [WebContainer : 0] br.com.caelum.vraptor.VRaptor: (96) VRaptor ended the request

Será que é por causa do especo colocado junto do Value no SELECT?

vc tem certeza que tá com o último snapshot do VRaptor?

vc tirou a versão antiga? o vraptor-3.1.2.jar não pode estar no WEB-INF/lib, só aquele jar do link q vc falou

realmente estava com outra lib do VRaptor. Agora deixei somente a do link (veja lista abaixo) porem estou pegando uma exception ao iniciar a aplicação:

rvalen@rvalen /cygdrive/c/workspace/ReleaseNotesSystem/WebContent/WEB-INF/lib
$ ls -la
total 17280
d---------+ 1 rvalen mkpasswd       0 2010-06-28 23:15 .
d---------+ 1 rvalen mkpasswd       0 2010-04-20 15:02 ..
----------+ 1 rvalen mkpasswd       0 2010-05-18 17:29 .jars
d---------+ 1 rvalen mkpasswd       0 2010-03-04 10:43 CVS
----------+ 1 rvalen mkpasswd  443432 2010-03-03 11:13 antlr-2.7.6.jar
----------+ 1 rvalen mkpasswd    4467 2010-03-01 09:09 aopalliance.jar
----------+ 1 rvalen mkpasswd  114916 2010-03-01 09:09 aspectjrt.jar
----------+ 1 rvalen mkpasswd  278682 2010-03-03 13:16 cglib-2.2.jar
----------+ 1 rvalen mkpasswd  324238 2010-03-01 09:09 cglib-nodep-2.1_3.jar
----------+ 1 rvalen mkpasswd  559366 2010-03-03 11:13 commons-collections-3.1.jar
----------+ 1 rvalen mkpasswd   57779 2010-03-01 09:09 commons-fileupload-1.2.1.jar
----------+ 1 rvalen mkpasswd   60841 2010-03-01 09:09 commons-logging.jar
----------+ 1 rvalen mkpasswd  585593 2010-04-16 15:26 dbunit-2.4.7.jar
----------+ 1 rvalen mkpasswd  313898 2010-03-03 11:13 dom4j-1.6.1.jar
----------+ 1 rvalen mkpasswd  313898 2010-03-03 11:52 dom4j.jar
----------+ 1 rvalen mkpasswd   50583 2010-03-03 11:52 ejb3-persistence.jar
----------+ 1 rvalen mkpasswd  577311 2010-03-01 09:09 google-collect-1.0.jar
----------+ 1 rvalen mkpasswd  279714 2010-03-03 11:52 hibernate-annotations.jar
----------+ 1 rvalen mkpasswd   66993 2010-03-03 11:52 hibernate-commons-annotations.jar
----------+ 1 rvalen mkpasswd 2266769 2010-03-03 11:52 hibernate-core.jar
----------+ 1 rvalen mkpasswd   31484 2010-03-03 11:25 hibernate-testing.jar
----------+ 1 rvalen mkpasswd 2421736 2010-03-03 11:25 hibernate3.jar
----------+ 1 rvalen mkpasswd  546698 2010-03-04 10:40 j2ee.jar
----------+ 1 rvalen mkpasswd  597476 2010-03-03 11:13 javassist-3.9.0.GA.jar
----------+ 1 rvalen mkpasswd   44600 2010-05-19 09:54 jboss-ejb3x.jar
----------+ 1 rvalen mkpasswd    5848 2010-05-21 11:42 jsr250-api.jar
----------+ 1 rvalen mkpasswd   30692 2010-03-01 09:09 jstl-api-1.2.jar
----------+ 1 rvalen mkpasswd  392434 2010-03-01 09:09 jstl-impl-1.2.jar
----------+ 1 rvalen mkpasswd   10899 2010-03-03 11:13 jta-1.1.jar
----------+ 1 rvalen mkpasswd  237047 2010-04-13 13:20 junit-4.8.1.jar
----------+ 1 rvalen mkpasswd  391834 2010-03-03 13:13 log4j-1.2.15.jar
----------+ 1 rvalen mkpasswd   74546 2010-03-01 09:09 mirror-1.5.1.jar
----------+ 1 rvalen mkpasswd  732695 2010-04-12 11:07 mysql-connector-java-5.1.12-bin.jar
----------+ 1 rvalen mkpasswd   31582 2010-03-01 09:09 objenesis-1.1.jar
----------+ 1 rvalen mkpasswd  239803 2010-03-01 09:09 ognl-2.7.3.jar
----------+ 1 rvalen mkpasswd 1555682 2010-03-03 13:22 ojdbc14.jar
----------+ 1 rvalen mkpasswd  324242 2010-03-01 09:09 org.springframework.aop-3.0.0.RELEASE.jar
----------+ 1 rvalen mkpasswd   53081 2010-03-01 09:09 org.springframework.asm-3.0.0.RELEASE.jar
----------+ 1 rvalen mkpasswd   30482 2010-03-01 09:09 org.springframework.aspects-3.0.0.RELEASE.jar
----------+ 1 rvalen mkpasswd  551967 2010-03-01 09:09 org.springframework.beans-3.0.0.RELEASE.jar
----------+ 1 rvalen mkpasswd  657492 2010-03-01 09:09 org.springframework.context-3.0.0.RELEASE.jar
----------+ 1 rvalen mkpasswd  359338 2010-03-01 09:09 org.springframework.core-3.0.0.RELEASE.jar
----------+ 1 rvalen mkpasswd  154200 2010-03-01 09:09 org.springframework.expression-3.0.0.RELEASE.jar
----------+ 1 rvalen mkpasswd  359154 2010-03-01 09:09 org.springframework.web-3.0.0.RELEASE.jar
----------+ 1 rvalen mkpasswd   28415 2010-03-01 09:09 paranamer-1.5.jar
----------+ 1 rvalen mkpasswd   23445 2010-03-03 13:12 slf4j-api-1.5.8.jar
----------+ 1 rvalen mkpasswd    9679 2010-03-01 09:09 slf4j-log4j12-1.5.8.jar
----------+ 1 rvalen mkpasswd    7600 2010-03-03 13:20 slf4j-simple-1.5.11.jar
----------+ 1 rvalen mkpasswd  783749 2010-06-23 08:33 vraptor-3.1.3-20100607.234700-8.jar
----------+ 1 rvalen mkpasswd  102829 2010-03-01 10:24 wsd_client_api-0.0.1.jar
----------+ 1 rvalen mkpasswd   84185 2010-03-01 10:24 wsd_server_api-0.0.1.jar
----------+ 1 rvalen mkpasswd  431406 2010-03-01 09:09 xstream-1.3.1.jar

Exception

meProvider': Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [br.com.caelum.vraptor.http.ParanamerNameProvider]: C
onstructor threw exception; nested exception is java.lang.NoClassDefFoundError: com.thoughtworks.paranamer.AnnotationParanamer
        at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:698)
        at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:192)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:984)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:886)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:479)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:290)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:287)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
        at org.springframework.context.event.AbstractApplicationEventMulticaster.getApplicationListeners(AbstractApplicationEventMulticaster.java:132)
        at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:86)
        at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:294)
        at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:858)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:419)
        at br.com.caelum.vraptor.ioc.spring.SpringBasedContainer.start(SpringBasedContainer.java:68)
        at br.com.caelum.vraptor.ioc.spring.SpringProvider.start(SpringProvider.java:82)
        at br.com.caelum.vraptor.VRaptor.init(VRaptor.java:110)

Acredito estar faltando algum jar?

substitua o paranamer-1.5.jar por esse:

http://github.com/caelum/vraptor/blob/master/vraptor-core/lib/mandatory/paranamer-2.2.jar

Lucas,

Substitui o jar e deu certo. O problema é que ele tenta criar um objeto UserAccount novo então seria mais interessante eu receber um List<String> com os ids que o usuário escolheu, assim eu posso buscar os users no banco. Infelizmente ao mudar a assinatura do meu método de

   1. public void  addReleaseDocument(ReleaseDocument releaseDocument, List&lt;UserAccount&gt; developersList){  
   2.         logger.trace("Developers: " + developersList.size());  
   3.         ...  
   4.     }  

para

   1. public void  addReleaseDocument(ReleaseDocument releaseDocument, List&lt;String&gt; developersList){  
   2.         logger.trace("Developers: " + developersList.size());  
   3.         ...  
   4.     }  

eu estou recebendo essa exception aqui

DEBUG 2010-06-29 23:20:36,906 [WebContainer : 1] br.com.caelum.vraptor.http.ognl.OgnlParametersProvider: (130) Applying releaseDocument.sdTicket with []
DEBUG 2010-06-29 23:20:36,937 [WebContainer : 1] br.com.caelum.vraptor.http.ognl.OgnlParametersProvider: (130) Applying developersList[0].id with [2         ]
DEBUG 2010-06-29 23:20:36,984 [WebContainer : 1] br.com.caelum.vraptor.http.ognl.OgnlParametersProvider: (147) cant find property for expression developersList[0].id ignoring
DEBUG 2010-06-29 23:20:37,000 [WebContainer : 1] br.com.caelum.vraptor.http.ognl.OgnlParametersProvider: (130) Applying releaseDocument.csTicket with []
DEBUG 2010-06-29 23:20:37,015 [WebContainer : 1] br.com.caelum.vraptor.http.ognl.OgnlParametersProvider: (130) Applying releaseDocument.versioningSystem with []
DEBUG 2010-06-29 23:20:37,046 [WebContainer : 1] br.com.caelum.vraptor.http.ognl.OgnlParametersProvider: (130) Applying releaseDocument.generalDescription with []
DEBUG 2010-06-29 23:20:37,125 [WebContainer : 1] br.com.caelum.vraptor.http.ognl.OgnlParametersProvider: (130) Applying developersList[].id with [2         ]
DEBUG 2010-06-29 23:20:37,140 [WebContainer : 1] br.com.caelum.vraptor.http.ognl.OgnlParametersProvider: (157) unable to parse expression 'developersList[].id'
ognl.ExpressionSyntaxException: Malformed OGNL expression: developersList[].id [ognl.ParseException: Encountered " "]" "] "" at line 1, column 16.
Was expecting one of:
    ":" ...
    "not" ...
    "+" ...
    "-" ...
    "~" ...
    "!" ...
    "(" ...
    "true" ...
    "false" ...
    "null" ...
    "#this" ...
    "#root" ...
    "#" ...
    "[" ...
    "{" ...
    "@" ...
    "new" ...
    &lt;IDENT&gt; ...
    &lt;DYNAMIC_SUBSCRIPT&gt; ...
    "\'" ...
    "`" ...
    "\"" ...
    &lt;INT_LITERAL&gt; ...
    &lt;FLT_LITERAL&gt; ...
    ]
        at ognl.Ognl.parseExpression(Ognl.java:112)
        at ognl.Ognl.setValue(Ognl.java:783)
        at br.com.caelum.vraptor.http.ognl.OgnlParametersProvider.createViaOgnl(OgnlParametersProvider.java:132)
        at br.com.caelum.vraptor.http.ognl.OgnlParametersProvider.createRoot(OgnlParametersProvider.java:108)
        at br.com.caelum.vraptor.http.ognl.OgnlParametersProvider.getParametersFor(OgnlParametersProvider.java:90)
        at br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.getParametersFor(ParametersInstantiatorInterceptor.java:98)
        at br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:83)
        at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
        at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
        at br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:42)
        at br.com.caelum.vraptor.core.InstantiatedInterceptorHandler.execute(InstantiatedInterceptorHandler.java:47)
        at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
        at br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:46)
        at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
        at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
        at br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:81)
        at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
        at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
        at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67)
        at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
        at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
        at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
        at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
        at br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:70)
        at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
        at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56)
        at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)
        at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190)
        at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:130)
        at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:87)
        at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:837)
        at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:747)
        at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:700)
        at com.ibm.ws.wswebcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:115)
        at com.ibm.ws.webcontainer.extension.DefaultExtensionProcessor.invokeFilters(DefaultExtensionProcessor.java:849)
        at com.ibm.ws.webcontainer.extension.DefaultExtensionProcessor.handleRequest(DefaultExtensionProcessor.java:785)
        at com.ibm.ws.wswebcontainer.extension.DefaultExtensionProcessor.handleRequest(DefaultExtensionProcessor.java:113)
        at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3507)
        at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:269)
        at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:815)
        at com.ibm.ws.wswebcontainer.WebContainer.handleRequest(WebContainer.java:1466)
        at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:122)
        at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:458)
        at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:387)
        at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:267)
        at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214)
        at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113)
        at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
        at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
        at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
        at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:136)
        at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:196)
        at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:751)
        at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:881)
        at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1497)
Caused by: ognl.ParseException: Encountered " "]" "] "" at line 1, column 16.
Was expecting one of:
    ":" ...
    "not" ...
    "+" ...
    "-" ...
    "~" ...
    "!" ...
    "(" ...
    "true" ...
    "false" ...
    "null" ...
    "#this" ...
    "#root" ...
    "#" ...
    "[" ...
    "{" ...
    "@" ...
    "new" ...
    &lt;IDENT&gt; ...
    &lt;DYNAMIC_SUBSCRIPT&gt; ...
    "\'" ...
    "`" ...
    "\"" ...
    &lt;INT_LITERAL&gt; ...
    &lt;FLT_LITERAL&gt; ...

        at ognl.OgnlParser.generateParseException(OgnlParser.java:3172)
        at ognl.OgnlParser.jj_consume_token(OgnlParser.java:3051)
        at ognl.OgnlParser.unaryExpression(OgnlParser.java:1236)
        at ognl.OgnlParser.multiplicativeExpression(OgnlParser.java:971)
        at ognl.OgnlParser.additiveExpression(OgnlParser.java:894)
        at ognl.OgnlParser.shiftExpression(OgnlParser.java:750)
        at ognl.OgnlParser.relationalExpression(OgnlParser.java:508)
        at ognl.OgnlParser.equalityExpression(OgnlParser.java:405)
        at ognl.OgnlParser.andExpression(OgnlParser.java:352)
        at ognl.OgnlParser.exclusiveOrExpression(OgnlParser.java:299)
        at ognl.OgnlParser.inclusiveOrExpression(OgnlParser.java:246)
        at ognl.OgnlParser.logicalAndExpression(OgnlParser.java:193)
        at ognl.OgnlParser.logicalOrExpression(OgnlParser.java:140)
        at ognl.OgnlParser.conditionalTestExpression(OgnlParser.java:101)
        at ognl.OgnlParser.assignmentExpression(OgnlParser.java:64)
...

Meu JSP continua o mesmo… será que devo alterar algo lá?

se vc vai receber List, vc não pode navegar pelas propriedades…

developersList[].id, ele tenta popular o id do objeto que tah na lista developersList… como a lista é de String, e String não tem id, ele dá esse erro…

vc pode usar só developersList[] como nome do seu select…

no hibernate tem uma operação chamada refresh, que se a entidade estiver com o id preenchido ele puxa do banco e preenche as outras propriedades:

session.refresh(userAccount);