Eu estou precisando criar dropDown dinâmicos para um form numa aplicação!
O caso é o seguinte! qnd seleciono o tipo de documento ele deve me retornar as localizações fisicas disponiveis para o tipo
e isso ele faz sem problemas, mas no momento de executar
a action de post, ele da a exception a seguir:
obs: ja tentei usar arraylist e tb nao deu certo!
a exception só acontece qnd eu seleciono un index maior ou igual a 1 no selectonemenu de localizacoes.
Agradeço pela ajuda!!
Exception:
[code]
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException
javax.faces.webapp.FacesServlet.service(FacesServlet.java:209)
org.apache.myfaces.component.html.util.ExtensionsFilter.doFilter(ExtensionsFilter.java:122)
root cause
java.lang.IllegalArgumentException
javax.faces.component.SelectItemsIterator.next(SelectItemsIterator.java:149)
javax.faces.component.UISelectOne.matchValue(UISelectOne.java:141)
javax.faces.component.UISelectOne.validateValue(UISelectOne.java:114)
javax.faces.component.UIInput.validate(UIInput.java:645)
javax.faces.component.UIInput.executeValidate(UIInput.java:849)
javax.faces.component.UIInput.processValidators(UIInput.java:412)
javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:912)
javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:912)
javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:912)
javax.faces.component.UIForm.processValidators(UIForm.java:170)
javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:912)
javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:342)
com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:78)
com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:90)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)
org.apache.myfaces.component.html.util.ExtensionsFilter.doFilter(ExtensionsFilter.java:122)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.17 logs.[/code]
ManagedBean:
[code]public Map getLocalizacoesMap()
{
Map maplocalizacoes;
mapLocalizacoes = new HashMap();
mapLocalizacoes.put(0,new ArrayList());
for(int i = 0; i < tiposDocumentoBanco.size(); i++)
{
List li = tiposDocumentoBanco.get(i).getArmazenamentosFísicos();
List localizacoes = new ArrayList();
localizacoes.add("");
for (int j = 0; j < li.size(); j++)
{
Localizacao localizacao = ((TipoDocumentoLocalizacao)li.get(j)).getLocalizacao();
localizacoes.add(localizacao.getReferencia());
}
mapLocalizacoes.put(i + 1,localizacoes);
}
return mapLocalizacoes;
}[/code]
JSP:
<h:selectOneMenu id="tipoDocumento" value="#{documento.tipoDocumentoSelecionado}" style="width : 339px; height : 23px;">
<f:selectItem itemLabel="" itemValue=""/>
<f:selectItems value="#{documento.listaTiposDocumento}"/>
<t:jsValueChangeListener for="indexTipo" property="value" expressionValue="$srcElem.selectedIndex"/>
<t:jsValueSet name="localizacoesTipo" value="#{documento.localizacoesMap}" />
<t:jsValueChangeListener for="localizacao" expressionValue="n=$srcElem.selectedIndex; l=localizacoesTipo[n]; $destElem.options.length=0; for(i=0;i<l.length;i++) { $destElem.options[i]=new Option(l[i],l[i]); }" />
</h:selectOneMenu>
<h:selectOneMenu id="localizacao" value="#{documento.localizacaoSelecionada}" style="width : 339px; height : 23px;">
<f:selectItem itemLabel="" itemValue=""/>
<t:jsValueChangeListener for="indexLocalizacao" property="value" expressionValue="$srcElem.selectedIndex"/>
</h:selectOneMenu>