因此,我有一个从Java代码中的数据库获取的URL。
public ActionForward executeAjaxShowTab(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
String url = getUrl(); //returns something like https://foo.bar
request.setAttribute("form", url);
return mapping.findForward(ForwardConstants.FORWARD_TAB); //goes back to alert tab on the page, not a modal dialog
}
我很困惑的是如何将上面的url传递给客户端,以在新标签页或浏览器窗口中打开url。我怎样才能做到这一点?我需要设置一个新的jsp页面,然后在该jsp页面上设置URL还是..?我为所有js函数都有一个单独的js文件,因此我对如何将其发送到js然后链接js文件感到困惑,因此jsp知道该函数。
编辑:这是我调用上述方法的方式。
当前jsp(它是模式对话框)具有一个按钮:
<button onclick="launchForm()"> </button>
js:
launchForm= function() { var params=""; yuiPost("foo.do?subaction=ajaxShowTab", "content", params);}
因此,如果我需要将其放在原始jsp上:
<script> var newTabUrl =${url}; window.open(newTabUrl); </script>
^那在按钮后面呢?
答案 0 :(得分:0)
您不能在服务器端执行此操作。
您可以做的是将其作为原始页面的一部分(通过JSP)作为某些Javascript代码段(可能只是<script> var newTabUrl = <your url> </script>
)的一部分返回
然后,如果您发现window.open()
设置为某个值,则可以使用newTabUrl
。
Open a URL in a new tab (and not a new window) using JavaScript
更新
好吧,我怀疑${url}
甚至是有效的JSP。您确定不使用某些模板引擎吗?如果它是纯经典的JSP,它将类似于
<% out.println(getUrl()); %>
您用于window.open()
的javascript参数的名称也是错误的。
<script> var newTabUrl = <% out.println(getUrl()); %>; window.open(newTabUrl); </script>
我不知道您在做什么,或者getUrl()
来自哪里,所以请根据您的需要进行解决。