从外部Web门户将参数传递给GWT nocache.js

时间:2012-11-03 05:48:05

标签: javascript gwt methods native

我创建了一个GWT窗口小部件,其根容器ID为“widgetContainer”,相应的编译文件为gwtwidget.nocache.js。我创建了这个小部件的war文件,并托管在本地服务器localhost:8888 / gwtwidget中。

我创建了另一个jsp应用程序,index.jsp如下:(将GWT模块集成到JSP应用程序中)

<html>
<head>
    <script type="text/javascript" language="javascript" src="http://localhost:8888/gwtwidget/gwtwidget/gwtwidget.nocache.js?appId=461333815262909&appId=461333815262909&appId=461333815262909&appId=461333815262909"></script>
</head>
<body>
    <div id="widgetContainer"></div>
</body>
</html>

我想检索从JSP应用程序通过nocache.js文件传递的参数。为此,我正在使用代码

public static native String getParameter( String moduleName, String parameterName ) /*-{
var search = "/" + moduleName + ".nocache.js";
var scripts = $doc.getElementsByTagName( "script" );
for( var i = 0; i < scripts.length; ++i ) {
    if( scripts[ i ].src != null && scripts[ i ].src.indexOf( search ) != -1 ) {
        var parameters = scripts[ i ].src.match(/\w+=\w+/g);
        for( var j = 0; j < parameters.length; ++j ) {
            var keyvalue = parameters[ j ].split( "=" );
            if( keyvalue.length == 2 && keyvalue[ 0 ] == parameterName ) {
                return unescape( keyvalue[ 1 ] );
            }
        }
    } 
}
return null;
}-*/;   

但无法将参数值输入GWT窗口小部件。任何人都可以帮我解决这个问题吗?

提前致谢。

1 个答案:

答案 0 :(得分:2)

如果您想使用查询字符串传递参数,则不是直截了当的。有办法解决这个问题。您可以参考以下帖子:

  1. Passing parameters to JavaScript files
  2. Pass vars to JavaScript via the SRC attribute
  3. 还有另一种方式,我觉得更简单。您可以在jsp文件中设置cookie。您可以在GWT模块中阅读cookie。

    <html>
    <head>
    <script type="text/javascript">
        document.cookie="appId=461333815262909"
    </script>
        <script type="text/javascript" language="javascript" src="http://localhost:8888/gwtwidget/gwtwidget/gwtwidget.nocache.js"></script>
    </head>
    <body>
        <div id="widgetContainer"></div>
    </body>
    </html>
    

    您可以在GWT模块中访问cookie“appId”:

    String param = Cookies.getCookie("appId");