我有以下commandLink:
<h:commandLink action="#{orderForm.printOrderCards}"
value="Print Document">
</h:commandLink>
ActionHandler如下所示:
public String printOrderCards() {
try {
HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext()
.getResponse();
PrintWriter out = response.getWriter();
out.println("<html><body>");
out.println("<script type=\"text/javascript\">");
String url = "http://nb200srv2016:8080/obt-documents/Artikel/2050/1007144_Rev.BA.pdf?allowCache=true&openDirectly=true";
out.println("window.open(\"" + url + "\");");
out.println("</script>");
out.println("</body></html>");
out.flush();
out.close();
} catch (final IOException e) {
e.printStackTrace();
}
return "go_printOrderCards";
}
我想在新窗口中打开URL。动作后应打开一个jsp-Page(go_PrintOrderCards
)。将在新窗口中打开URL。但是不会显示go_PrintOrderCards
的新jsp-Page。
有人可以帮助我,我该如何解决?
您可以做的是:
1)像这样将printOrderCards
方法的返回类型更改为void:
public void printOrderCards() {
2)删除printOrderCards
方法内的所有代码行,并将这些行添加至方法内:
String url = "http://nb200srv2016:8080/obt-documents/Artikel/2050/1007144_Rev.BA.pdf?allowCache=true&openDirectly=true";
RequestContext requestContext = RequestContext.getCurrentInstance();
requestContext.execute("window.open('"+url+"')");