Estou começando agora a trabalhar com Struts e tenho (como todo mundo) algumas dúvidas básicas. Aí vai a primeira:
Tenho uma página index.jsp que é protegida, assim quando o usuário tenta acessá-la, ele é direcionado para uma página de login (login.jsp).
Após a autenticação do usuário (utilizo um Autenticador particular, que verifica o perfil do usuário), a página index.jsp é exibida.
Nesta página verifico qual a role que o usuário pertence e dependendo da role mando pra uma página.
Este é o código da index.jsp:
<%@ taglib uri=“http://struts.apache.org/tags-bean” prefix=“bean” %>
<%@ taglib uri=“http://struts.apache.org/tags-html” prefix=“html”%>
<html>
<%
if( request.isUserInRole(“perfil_1”)) {
%>
<!-- AQUI DEVO CHAMAR A ACTION, AO INVÉS DE USAR O INCLUDE -->
<%@include file=“realizarLogin/menu_afv.jsp”%>
}
%>
<%
if( request.isUserInRole(“perfil_2”)) {
%>
PERFIL 2
<%}%>
</body>
</html>
quando o usuário for do perfil_1 preciso que ele seja direcionado para uma página que usa Tiles. No entanto só sei direcioná-lo para esta página através de um Action.
Assim a dúvida é: como faço para chamar a Action ao invés de usar o include?? Ou então como faço pra incluir a página com o Tiles.
Me disseram, que no struts-config.xml teria que alterar pra chamar a action. É esta mesma a saída?? Como alterar o struts-config.xml
Obrigado
Fico no aguardo
Vcoluci
Ola vcoluci,
pelo que estudei de Struts, o certo seria alterar o struts-config.xml
primeiro pq o padrão MVC preza o desaparecimento de scriptlets na
view (paginas JSP)
dentro do action vc ira redirecionar com ActionForward…
no struts-config.xml vc devera ter um elemento action assim:
<action
path="/seuIdentificador"
type="o objeto Action"
name="o ActionForm para get e set"
input="sua JSP"/>
qq duvida posta aê!
falow;
O meu Action é assim:
public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response){
RealizarLoginForm login = (RealizarLoginForm)form;
String operacao = login.getOperation();
if (operacao != null && operacao.equals("logar")){
String j_username = request.getParameter( "j_username" );
String j_password = request.getParameter( "j_password" );
ActionMessages errors = login.validate(mapping, request);
if (errors.isEmpty()){
String req = "/j_security_check?j_username=" + j_username + "&j_password=" + j_password;
RedirectingActionForward forward = new RedirectingActionForward(req);
return forward;
}else{
saveErrors( request, errors );
return mapping.findForward("realizarLogin");
}
}else{
return mapping.findForward("realizarLogin");
}
}//execute
}//action
Então quando é preenchido usuário e senha, retorno para o forward j_security_check
String req = “/j_security_check?j_username=” + j_username + “&j_password=” + j_password;
RedirectingActionForward forward = new RedirectingActionForward(req);
return forward;
Aí, este j_secutiry_check me retorna o perfil do usuário.
Este perfil estou testando no index.jsp.
Eu criei este Action:
public class RedirecionaAction extends Action {
public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response){
return mapping.findForward("loginAFV");
}
}
e coloquei isto no struts-config.xml:
<action path="/loginAFV/login" type=“net.natura.pessoa.processocontinuo.atualizacao.apresentacao.action.RedirecionaAction”
name=“loginAFV” scope=“request” input=“index.jsp”>
<forward name=“loginAFV” path=".afv"/>
</action>
O que está faltando ??
Valmir
Consegui…
eu inclui o Action que descrevi abaixo, e alterei o struts-config.xml conforme está na outra mensagem.
Aí no meu index.jsp, coloquei
<jsp:forward page="/loginAFV/login.do"/>
quando o usuário for do perfil_1, aí ele já chama a Action direto.
Se alguém tiver alguma outra sugestão, por favor mande aí.
Valeu
Valmir