ju1
Agosto 3, 2006, 3:36pm
#1
Olá ,
como faço para passar um valor de uma session para
uma string no action,tem jeito?
estou fazendo dessa forma mas dá erro:
String id = session.getAttribute(“UserId”);
O erro:
O meu action:
package cadastro.action;
import java.sql.SQLException;
import java.util.LinkedList;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import cadastro.bean.AdminUsers;
public class EditUserAction extends Action {
public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
LinkedList users = null;
ActionErrors errors = new ActionErrors();
try {
AdminUsers adminUsers = new AdminUsers();
users = adminUsers.getUserList();
HttpSession session = request.getSession();
session.setAttribute("editUserBean", users);
String id = session.getAttribute("UserId");
}
catch (SQLException e) {
errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("error.user.list"));
getServlet().log("Erro carregando a lista de usuários", e);
}
if (!errors.isEmpty()) {
saveErrors(request, errors);
return (mapping.findForward("failure"));
}
else {
return (mapping.findForward("success"));
}
}
}
Teste assim:
String id = (String)session.getAttribute("UserId");
Oi, Ju.
Na verdade, isto é por que internamente os atributos que guardamos tanto no request quanto na session são armazenados em um Map. Um Map pode armazenar qualquer tipo de objeto. Assim, antes de usar um objeto recuperado da sessão, é necessário informar que tipo de objeto é esse através do cast.
Um abraço.