1

我创建了一个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>

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

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小部件中。有人可以帮我解决这个问题吗?

提前致谢。

4

1 回答 1

2

如果您想使用查询字符串传递参数,这并不简单。有办法做到这一点。您可以参考以下帖子:

  1. 将参数传递给 JavaScript 文件
  2. 通过 SRC 属性将 vars 传递给 JavaScript

还有一种方法,我觉得比较简单。您可以在 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");
于 2012-11-03T08:55:00.687 回答