Estou com uma dúvida aqui: no sistema gero um relatório após um cadastro, que é exibido no navegador do usuário. Porém, quando um cadastro é feito (o usuário clica no botão, a action mapeada gera o relatório e redireciona para outra action), o pdf do relatório é exibido na mesma aba do navegador, fazendo com que o usuário tenha que voltar no histórico do navegador para voltar ao sistema. Pensei em fazer o seguinte: quando o usuário clicar no botão que realiza o cadastro, redirecionar (pelo Spring MVC) para outra action que devolve uma jsp com javascript, que por sua vez abre uma nova aba em branco. Mas tô achando isso mta gambiarra, alguém conhece uma outra forma de se fazer isso?
Se não fui muito claro, é só perguntar que tento explicar melhor.
Eu já consegui enviar o pdf no navegador do cliente, o que preciso é que esse pdf seja aberto em uma nova aba do navegador do cliente (o que me faz pensar que seja necessário javascript, pois é no lado cliente).
Muito similar ao download, você pode ter um Servlet nessa sua página que retorna o arquivo inteiro na Stream (binário), e você seta o Content-Type (response.setContentType()) para “application/pdf”.
Dessa forma, se o navegador “souber” como ler o PDF, ele vai exibir, caso contrário, oferecerá o download.
Quanto a abertura, creio que há 2 jeitos: ou sua Action redireciona a requisição para este PDF, ou um JavaScript abre em outra janela (como você citou).
Era realmente isso que eu estava precisando, mas como não me lembrava, não sabia nem pelo que buscar no google. Realmente era o target que eu procurava.
Muito obrigado pela ajuda e atenção de todos, tópico resolvido.