Chamar action direto do jsp (automaticamente)

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:

&lt;action
  path=&quot;/seuIdentificador&quot;
  type=&quot;o objeto Action&quot;
  name=&quot;o ActionForm para get e set&quot;
  input=&quot;sua JSP&quot;/&gt;

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 &amp;&amp; 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 + "&amp;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