如何从数据库获取的URL在新选项卡中打开URL?

时间:2019-02-01 14:51:52

标签: java jsp struts

因此,我有一个从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>

^那在按钮后面呢?

1 个答案:

答案 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()来自哪里,所以请根据您的需要进行解决。