Olá pessoal, após ler vários posts antigos e outros sites não consegui resolver o meu problema.
É bem simples, eu to tentando imprimir os dados de dois ArrayList no JSP usando as tags do struts mas não sei como fazer isso.
Eu consigo imprimir somente 1 dos arrays e o outro ele não acha. Aqui vai alguns trechos de código importante
O JSP:
<jsp:useBean id="accounts" scope="request" class="java.util.ArrayList"/>
<jsp:setProperty name="accounts" property="accounts" value="<%=session.getAttribute("accounts")%>" />
<logic:iterate id="user" name="users">
<tr>
<td><a href="edit.do?id=<bean:write name="user" property="id"/>"><bean:write name="user" property="id"/></a></td>
<td><bean:write name="user" property="firstName"/></td>
<td><bean:write name="user" property="lastName"/></td>
<td><bean:write name="user" property="email"/></td>
<td><bean:write name="user" property="address"/></td>
<logic:empty name="accounts" property="accounts">
<td>
O Usuário não possui contas para acessar!
</td>
</logic:empty>
<logic:notEmpty property="accounts" name="accounts">
<td>
<logic:iterate id="account" name="accounts">
<bean:write name="account" property="id"/>
</logic:iterate>
</td>
</logic:notEmpty>
</tr>
</logic:iterate>
O Action do struts-config.xml:
<action path="/actions/listUsers"
name="users"
type="control.actions.ListUsersAction"
input="/error.jsp" attribute="accounts"
scope="request">
<forward name="listUsers" path="/listUsers.jsp"/>
</action>
A Classe control.actions.ListUsersAction:
public class ListUsersAction extends CommonAction{
private static Logger logger =
Logger.getLogger(ListUsersAction.class.getName());
public ActionForward commonExecute( ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {
ActionErrors errors = new ActionErrors();
logger.warn("ListUsersAction.commonExecute()");
HttpSession session = request.getSession();
// Pega a fábrica de UserManager da sessão
IF_UserManagerFactory userFactory = (IF_UserManagerFactory) session.getAttribute("userfactory");
IF_UserManager userManager = userFactory.createUserManager();
Collection c = new ArrayList();
Collection u = new ArrayList();
try {
// Pega todos os usuários do BD e poe numa lista
c = userManager.getAll();
} catch (DAOException e) {
// Mensagem para o usuário:
errors.add("label", new ActionError("error.listfailed"));
saveErrors(request, errors);
// Log do erro:
String message = "Erro ao listar os usuários";
logger.fatal(message, e);
// Salva a corrente de exceções:
request.setAttribute("MYEXCEPTION", new DAOException(message, e));
// Return to the error page
return (mapping.findForward("error"));
}
try{
// Pega todas as contas do usuário e poe numa lista
Iterator i = c.iterator();
User user;
while(i.hasNext()){
user = (User)i.next();
u.add( userManager.getOwnedAccounts( user.getId() ) );
}
}
catch (DAOException e) {
// Mensagem para o usuário:
errors.add("label", new ActionError("error.listfailed"));
saveErrors(request, errors);
// Log do erro:
String message = "Erro ao obter od ID das contas de acesso do usuário";
logger.fatal(message, e);
// Salva a corrente de exceções:
request.setAttribute("MYEXCEPTION", new DAOException(message, e));
// Return to the error page
return (mapping.findForward("error"));
}
session.setAttribute("users", c);
//session.setAttribute("accounts", u);
//session.setAttribute("users", u);
return (mapping.findForward("listUsers"));
}
}
No JSP só aparece o ArrayList de “users”.
Tem como eu definir 2 arrays para um mesmo atributo? //session.setAttribute(“users”, u);
Quando eu defino outro atributo para a sessão – //session.setAttribute(“accounts”, u); – não consigo acessa-lo no JSP.
Quando eu tento fazer-lo, da o seguinte erro
org.apache.jasper.JasperException: Cannot find any information on property 'accounts' in a bean of type 'java.util.ArrayList'
149966 [http-8084-Processor24] WARN org.apache.struts.util.RequestUtils - No FormBeanConfig found under 'accounts'
Como eu faria isso?