Je souhaite depuis ma jsp ouvrir une nouvelle page web, tout en redirigeant vers une action struts. Je dois en fait continuer le traitement de mon application tout en en ouvrant une autre. J'ai donc choisi d'ouvrir la nouvelle page via un javascript:window.open() et de poursuivre mon application avec un <jsp:forward> :
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %>
<logic:present name="gedeonWebUrl">
<bean:write name="gedeonWebUrl"/>
<c:set var="urlToLaunch"> <bean:write name="gedeonWebUrl"/> </c:set>
<body onLoad="javascript:window.open('<bean:write name="urlToLaunch"/>')">
<jsp:forward page="/redirectToExternallCall.do"/>
</body>
</logic:present>
<logic:notPresent name="gedeonWebUrl">
<body>
<jsp:forward page="/redirectToExternallCall.do"/>
</body>
</logic:notPresent>
Mais, le forward est directement executé, sans que la popup soit ouverte, tandis qu'elle l'est si je supprime le forward...
Pensant que le onLoad ne s'executait pas avant le forward, j'ai choisi de mettre les instructions dans une fonction javascript, afin que la popup s'ouvre avant la redirection, j'arrive à ceci :
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %>
<script>
function exec(url, action) {
window.open(url);
//document.write(action);
}
</script>
<logic:present name="gedeonWebUrl">
<c:set var="urlToLaunch"> <bean:write name="gedeonWebUrl"/> </c:set>
<body onLoad="javascript:exec('<bean:write name="urlToLaunch"/>', '<jsp:forward page="/redirectToExternallCall.do"/>')">
</body>
</logic:present>
Mais le résultat est le même que précédemment... Si quelqu'un peut m'éclairer parce que là, je vois pas.
Configuration: Windows XP
Internet Explorer 6.0