Dúvida no html:options
Meu jsp:
<html:select property=“executorId”>
<html:options
collection="lstusuarios"
property="value"
labelProperty=“label” />
</html:select>
listsis é um ArrayList
listsis.add( new LabelValueBean( “Mostrado”, “Valor” ) );
request.setAttribute(“lstsistemas”,listsis);
Ele mostra as labels e values corretamente no jsp, ao clicar submit ele processa e insere os valores corretos no banco, inclusive o atributo executorId, mas ao inves de seguir para a pagina correta
ele mostra:
javax.servlet.ServletException: javax.servlet.jsp.JspException: Cannot find bean under name lstsistemas
Cara, esse erro geralmente ocorreu quando o atributo consultado não está na request.
Verifique se tua lista foi setada na request antes do redirecionamento.
Caso o erro ainda continue, cole os trechos .java e o .jsp para olhar melhor.
Abraços
O codigo executa corretamente e insere as informaçoes no banco, mas mostra aquela pagina depois.
Ele chama a action com action=inicioPerfil que redireciona pro jsp onde um form passando action=novoPerfil .
if(request.getParameter(“action”).equals(“inicioPerfil”)){
Collection <Sistema>c = null;
Collection <Usuario>c2 = null;
ArrayList<LabelValueBean> listusr = new ArrayList<LabelValueBean>();
ArrayList<LabelValueBean> listsis = new ArrayList<LabelValueBean>();
c = FabricaDaoFactory.getInstance().getFabricaDao().obtemTodosSistemas();
for (Sistema s : c) {
listsis.add( new LabelValueBean( s.getSistemaId().toString(), s.getSistemaId().toString() ) );
}//for
request.setAttribute(“lstsistemas”,listsis);
c2 = FabricaDaoFactory.getInstance().getFabricaDao().obtemTodosUsuarios();
for (Usuario u : c2) {
listusr.add( new LabelValueBean( u.getUserId().toString(), u.getUserId().toString().toString() ) );
}//for
request.setAttribute("lstusuarios",listusr);
return mapping.findForward(PERFIL_INICIO);
}//inicioPerfil
if(request.getParameter(“action”).equals(“novoPerfil”)){
Perfil p = new Perfil();
int resp = 0;
PerfilActionForm paf = (PerfilActionForm) form;
BeanUtils.copyProperties(p , paf);
resp = FabricaDaoFactory.getInstance().getFabricaDao().inserirPerfil§;
if(resp>0){
request.setAttribute("msg", "inserido com sucesso");
return mapping.findForward(PERFIL_INSERIDO);
}
request.setAttribute("msg", "Erro DB");
return mapping.findForward(ERRODB);
}////novoPerfil
Funcionou agora.
tirei essas listas do request e mudei para atributos da session.
adcionei no jsp:
<jsp:useBean id=“lstsistemas” type=“java.util.Collection” scope=“session”/>
<jsp:useBean id=“lstusuarios” type=“java.util.Collection” scope=“session”/>
e mudei no Action
request.getSession().setAttribute(“lstsistemas”,listsis);
request.getSession().setAttribute(“lstusuarios”,listusr);
Como eu estou trabalho com escopo “request”, talvez ele estivesse passando lstsistemas e lstusuarios para o Form esperando que ele tivesse getters e setters.
Bom, foi. Valeu.
Agora surguiu um problema meio relacionado em outra pagina.
Agora com um select multiple
Action:
ArrayList<LabelValueBean> listusr = new ArrayList<LabelValueBean>();
request.setAttribute(“lstusuarios”,listusr);
JSP:
<jsp:useBean id=“lstusuarios” type=“java.util.ArrayList<LabelValueBean>” scope=“request”/>
<html:select property=“funcionarioList” multiple=“1”>
<html:options
collection="lstusuarios"
property="value"
labelProperty=“label” />
</html:select>
FORM:
public void setFuncionarioList(ArrayList<LabelValueBean> funcionarioList) {
}
Os valores chegam no JSP e sao mostrados corretamente, mas os dados aparentemente nao estao chegando no form. Esse funcionarioList chega no form do mesmo tipo de lstusuarios ou de algum outra maneira pradronizada?