Quero redirecionar meu jsp para outra página jsp usando a função JavaScript quando abrir o BeforeLogin
página. Mas eu recebi a mensagem de erro abaixo.
O distribuidor do Struts não pode ser encontrado. Isso geralmente é causado pelo uso da tag Struts sem o filtro associado. As tags Struts só podem ser usadas quando a solicitação passou por seu filtro de servlet, que inicializa o distribuidor Struts necessário para essa tag.
Não estou certo do que fazer.
BeforeLogin.jsp:
function newpage(){
window.open("Login.jsp");
}
<body onLoad="goNewWin()">
<a href="BeforeLogin.jsp">click here to login</a>
</body>
Login.jsp:
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>
<s:text name="Login"/>
</title>
</head>
<body> ..... </body>
web.xml:
<filter>
<filter-name>DispatcherFilter</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>DispatcherFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
struts.xml:
<package name="struts2" namespace="/" extends="struts-default">
<action name="login" class="com.action.LogonAction">
<result name="input">Login.jsp</result>
</action>
Respostas:
0 para resposta № 1Crie um resultado sem ação e use-o em vez de JSP.
struts.xml:
<action name="showLogin">
<result>Login.jsp</result>
</action>
JS:
function newpage(){
window.open("showLogin");
}
Explicação:
O erro diz claramente que
Isso geralmente é causado pelo uso de tags Struts sem o filtro associado
significa que você possui uma tag JSP e Struts, mas essa JSP não é usada pelo filtro, pois pode ser um arquivo de boas-vindas, ou seja, index.jsp
, arquivo de código de erro, ou seja, 404.jsp
, configurado no web.xml
.
Esses recursos são manipulados pelo servidor da web antes de qualquer filtro ou servlet mapeado para o recurso estar envolvido.
Os arquivos de boas-vindas geralmente contêm um código de redirecionamento para uma ação válida que é enviada para um JSP que pode ter tags Struts. Não use JSPs diretamente em seu aplicativo, use ações.
1 para resposta № 2
Este erro foi criado porque você está chamando um JSP que está tentando usar as tags Struts sem ter passado por uma ação primeiro e, portanto, sem encontrar a estrutura subjacente necessária.
Struts2 é uma estrutura MVC, cujo design implica que uma nova solicitação deve passar por um ontroller (C) (a ação) e depois ser renderizada por uma visualização (V) (o JSP).
Você deve evitar chamar JSPs diretamente, deve chamar a ação de login, que após sua execução despachará o JSP de login.
window.open("login.action");