如何将GWT用作外部组件引擎?

如何将GWT用作外部组件引擎?,gwt,Gwt,例如,假设我想在我的页面上显示一个CellTable。我想用Javascript定义这个单元格表的行和列,提供一个数据源,然后调用一个GWT方法,将这个单元格表注入到页面中,并进行AJAX调用以用数据填充它 需要注意的是,我的应用程序已经存在于自己的war中并部署在服务器上——我想部署另一个GWT应用程序war,并能够从我的应用程序调用javascript并向其传递参数(例如,通过javascript),以便我可以自定义我的CellTable列和内容 问题是GWT应用程序只有一个入口点,它不接受

例如,假设我想在我的页面上显示一个CellTable。我想用Javascript定义这个单元格表的行和列,提供一个数据源,然后调用一个GWT方法,将这个单元格表注入到页面中,并进行AJAX调用以用数据填充它

需要注意的是,我的应用程序已经存在于自己的war中并部署在服务器上——我想部署另一个GWT应用程序war,并能够从我的应用程序调用javascript并向其传递参数(例如,通过javascript),以便我可以自定义我的CellTable列和内容

问题是GWT应用程序只有一个入口点,它不接受任何参数——这意味着我必须使用我在html页面上植入的一些数据构建自定义的CellTable,然后在onModuleLoad()中提取。这样做似乎很愚蠢,因为我必须有效地编写某种输入/输出语言并自己解析它,例如:

// entry point
public void onModuleLoad() {
    // Create a CellTable.
    CellTable<Data> table = new CellTable<Data>();
    // suppose we have a hidden element on the HTML page which has the column information for our cell table, i.e. <input type="hidden" id="SomeHiddenFieldValueWithInputs" value="Column1|Column2"/>

    RootPanel cellTableMetaData = RootPanel.get("SomeHiddenFieldValueWithInputs")   ; // suppose the value of this is Column 1|Column2
    String tableColumns = cellTableMetaData.getElement().getAttribute("value");
    String[] columns = tableColumns.split("|");
    for(String columnName:columns)
    {
        // Add a text column to show the name.
        TextColumn<Data> column = new TextColumn<Data>() {
            public String getValue(Data object) {
                return object.getValue(columnName); // this line doesn't even compile because columnName isn't visible here
            }
        };
        table.addColumn(column, columnName);

    }

    RootPanel.get("GwtCellTableContainerDiv").add(table);
}
//入口点
moduleload()上的公共void{
//创建一个单元格表。
CellTable=新的CellTable();
//假设我们在HTML页面上有一个隐藏元素,其中包含单元格表的列信息,即。
RootPanel cellTableMetaData=RootPanel.get(“SomeHiddenFieldValueWithInputs”);//假设其值为第1列|第2列
String tableColumns=cellTableMetaData.getElement().getAttribute(“值”);
String[]columns=tableColumns.split(“|”);
用于(字符串columnName:columns)
{
//添加一个文本列以显示名称。
TextColumn=新的TextColumn(){
公共字符串getValue(数据对象){
return object.getValue(columnName);//由于columnName在这里不可见,所以此行甚至不编译
}
};
表.addColumn(列、列名称);
}
get(“GwtCellTableContainerDiv”).add(table);
}

您需要使用跨站点链接器构建第二个GWT应用程序(具有自定义CellTable的应用程序)。通过这个链接器,GWT生成可以在其他javascript应用程序中使用的javascript。(关于链接器的部分)


要与CellTable应用程序通信,它必须使用JSNI导出一些Javascript函数才能从Javascript调用,下面是一个示例:

您需要使用跨站点链接器构建第二个GWT应用程序(具有自定义CellTable的应用程序)。通过这个链接器,GWT生成可以在其他javascript应用程序中使用的javascript。(关于链接器的部分)


要与CellTable应用程序通信,它必须使用JSNI导出一些Javascript函数,以便从Javascript调用,下面是一个示例:

不完全是一个答案,但是如果您已经计划按照ajax填充数据,也许您可以将数据和列信息作为响应发送?或者用户可以在请求数据之前修改列吗?不完全是答案,但是如果您已经计划按照ajax填充数据,那么您可以将数据和列信息都作为响应发送?或者用户可以在请求数据之前修改列吗?