我正在尝试使用SmartGwt.我正在使用XJSONDatasource对SmartClient中具有JSON数据的示例页面进行跨域调用.但是,当我运行代码时,会出现一个弹出窗口,上面写着"查找符合您标准的记录......"这种情况永远不会消失,并且数据未加载.我正在使用SmartGwt的免费版本(我的公司已经说过这就是我们将要使用的).希望我只是遗漏了一些明显的东西.
DataSource dataSource = new XJSONDataSource();
dataSource.setDataTransport(RPCTransport.SCRIPTINCLUDE);
dataSource.setDataFormat(DSDataFormat.JSON);
dataSource.setDataURL("http://www.smartclient.com/smartgwt/showcase/data/dataIntegration/json/contactsData.js");
DataSourceTextField nameField = new DataSourceTextField("name", "name");
nameField.setValueXPath("name");
dataSource.setFields(nameField);
ListGrid grid = new ListGrid();
grid.setDataSource(dataSource);
grid.setWidth100();
grid.setHeight(100);
grid.setAutoFetchData(true);
grid.draw();
Run Code Online (Sandbox Code Playgroud) 首先,我想要的是相当复杂的,至少对我而言,但另一方面听起来令人兴奋.
我有一个用delphi编写的软件,我想要一个基于Web的实时客户端.
要求:
在服务器端
在delphi方面,我认为我可以使用Overbyte中的ICS来处理请求.我知道来自ICS包的THttpAppSrv可以很容易地提供简单的内容,但是Websocket呢,或者我怎么能用它进行长时间的轮询呢?
您如何看待,它是一个很好的组合(GWT,客户端的SmartGWT,以及delphi方面的ICS),是否有任何示例项目,还是有其他解决方案?
更新 感谢有用的评论,我想我更接近解决方案.很高兴知道GWT可以使用自定义服务器,但我认为Arnaud是对的,GWT使用它自己的Jetty服务器是一个完整的解决方案,但遗憾的是不适合我.:)我想我需要一个用delphi编写的服务器,它可以与GWT RPC通信.
更新2 我接受了Arnaud Bouchez的答案,这个答案让我看起来对原始问题最好,但我认为有一个更好的解决方案(如果你稍微改变一点要求)来创建一个在浏览器中运行的delphi应用程序的客户端.我在这里做一点评论,分享这个想法.最后我使用了node.js服务器,并在ZMQ的帮助下将其连接到我的delphi应用程序.
我目前正在与SmartGWT合作,并一直试图获得一种方法,将gwt标准VerticalPanel等面板纳入智能GWT窗口.VerticalPanel的原因是我可以将小部件附加到verticalpanel对象,而无需重新设置整个内容,例如:
HTMLPane hPaneObj = new HTMLPane();
hPaneObj.setContents("Foo");
Run Code Online (Sandbox Code Playgroud)
现在要追加我只能看到我能做到:
hPaneObj.setContents(hPaneObj.getContents() + "Bar");
Run Code Online (Sandbox Code Playgroud)
这不是我需要的.
在我添加了VerticalPanel之后出现问题,即使使用带有true的'setCanSelectText'方法作为参数,我也无法在窗口中选择任何文本.以下是我放在一起的简短示例:
public void onModuleLoad() {
Window theWindow = new Window();
theWindow.setTitle("Good evening");
theWindow.setWidth(500);
theWindow.setHeight(500);
theWindow.setCanSelectText(true);
VerticalPanel vp = new VerticalPanel();
vp.add(new HTML("foo"));
vp.add(new HTML("bar"));
theWindow.addItem(vp);
Canvas canvas = new Canvas();
canvas.addChild(theWindow);
canvas.draw();
}
Run Code Online (Sandbox Code Playgroud)
然而,我很惊讶HTMLPane不允许我在不重置整个内容的情况下追加.
任何建议都会受到赞赏,但我需要能够'追加'到专家组.我并不特别喜欢使用垂直面板的想法,但我需要找到允许上述方法或允许我允许垂直面板可访问的方法,即选择文本.
非常感谢
克里斯托弗.
我已经开始寻找一些用于动画的外部 GWT库,但对于我想要的东西来说,它们似乎都有点过大了。
我试图模仿GWT 中的JQuery Tools 滚动标签插件来实现滚动导航(想想 iphone)。用户单击一个项目,页面滚动到该项目的子面板,该面板也可能有可以单击的子面板。
我需要做的就是在某个固定的时间内前后滑动一个 div,x 个像素
我发现的关于在 GWT 中编写动画的唯一真正的教程已有 2 年历史,并且似乎有点冗长(管理单个帧等......)
是否没有更简单的解决方案可以轻松地将 div 从一个位置移动到另一个位置而不需要所有额外的麻烦?
请原谅我,但我来自 jQuery 编码,它简单而轻松地内置了此功能。
我正在寻找一个关于如何在SmartGWT中自定义DataSource的好教程(代码示例现在也会这样做).
一些细节:
我有一个GWT项目,它使用专有的客户端 - 服务器协议来获取数据(使用基于GWT类的扩展API).服务器不基于GWT,即GWT仅用于客户端.
我想通过创建一个与现有GWT基础设施交互的自定义DataSource,将SmartGWT的小部件与这些数据结合使用.
有人知道这样的资源吗?
编辑:
Charles Kendrick的回答对我有用.
对于工作代码示例,您可以看到这一点.
我需要在使用文件夹的"+"符号扩展它时获取树节点的子记录.如果任何特定节点没有孩子,则"+"符号应该消失.此要求类似于链接中的要求
但有些人如何对我不起作用.只有父节点显示文件夹,子节点不默认为文件夹.以下是我正在使用的代码.我复制了上面链接中的代码.唯一的变化是用树节点替换数据源.
public void onModuleLoad() { Tree adminTree = new Tree(); adminTree.setID("adminTreeId"); adminTree.setModelType(TreeModelType.PARENT); adminTree.setRootValue("/"); adminTree.setAutoOpenRoot(true); TreeGrid adminTreeGrid = new TreeGrid(); adminTreeGrid.setWidth(500); adminTreeGrid.setHeight(400); adminTreeGrid.setShowOpenIcons(false); adminTreeGrid.setShowDropIcons(false); //adminTreeGrid.setClosedIconSuffix(""); adminTreeGrid.setAutoFetchData(true); adminTreeGrid.setData(adminTree); TreeNode treeNode1 = new TreeNode(); treeNode1.setTitle("Node 1"); treeNode1.setID("node1"); TreeNode treeNode2 = new TreeNode(); treeNode2.setTitle("Node 2"); treeNode2.setID("node2"); TreeNode treeNode3 = new TreeNode(); treeNode3.setTitle("Node 3"); treeNode3.setID("node3"); TreeNode treeNode4 = new TreeNode(); treeNode4.setTitle("Node 4"); treeNode4.setID("node4"); adminTree.add(treeNode1, "/"); adminTree.add(treeNode2, "/"); adminTree.add(treeNode3, treeNode1); adminTree.add(treeNode4, treeNode2); adminTreeGrid.draw(); }
"节点1"和"节点2"显示带有"+"符号的文件夹,但"节点3"和"节点4"未显示给出扩展它们的选项.
如果我错过了什么,请帮忙.
谢谢,Vamsi
我在我的项目中使用GWT.最近我尝试将GWT + Java + tomcat的手动编译转换为maven项目.几乎我能够将它成功打包到战争中.,当我在tomcat上部署时我遇到了跟随错误:
EVERE:在java.lang上的java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)的java.lang.ClassLoader.defineClass1(本机方法)中调度传入的RPC调用java.lang.NoClassDefFoundError:javax/validation/Path时发生异常位于org.apache的org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2818)的java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)中的.ClassLoader.defineClass(ClassLoader.java:616). catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1159)位于org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1647)org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java: 1526)at java.lang.Class.forName0(Native Method)at java.lang.Class.forName(Class.java:247)at com.google.gwt.user.server.rpc.SerializationPolicyLoader.loadFromStream(SerializationPolicyLoader.java: 196)在com.google.gwt.user.server.rpc.RemoteServiceServlet.loadSerializationPolicy(RemoteServi)ceServlet.java:90)com.google.gwt.user.rp..RemoteServiceServlet.doGetSerializationPolicy(RemoteServiceServlet.java:293)com.google.gwt.user.server.rpc.RemoteServiceServlet.getSerializationPolicy(RemoteServiceServlet.java: 157)在com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.prepareToRead(ServerSerializationStreamReader.java:455)
这是我在我的添加中添加的内容pom.xml
:
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt-servlet</artifactId>
<version>${gwt.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt-user</artifactId>
<version>${gwt.version}</version>
<scope>provided</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
作为依赖.
请帮助我.
我需要添加更多来解决问题?
经过一些研究,我注意到smartGWT不支持分页,而ListGrid
只支持动态滚动。但如果我真的需要分页,我该如何实现呢?
假设我想要这样的“下一个”和“上一个”按钮:
http://gwt.google.com/samples/Showcase/Showcase.html#!CwCellTable
PS:这个例子是在GWT中,我想要的是类似的东西,但是在smartGWT中
我有2个TimeItems,我希望能够验证第二个项目的值不大于第一个项目的值.
我知道我必须从CustomValidator继承并将我的验证逻辑放在#condition中,我可以使用#getFormItem检索已验证项的值,但我不知道如何将第一个字段的值传递给验证器
我在GWT项目的编译期间遇到此错误,没有像'gwt-UnitCache'这样的文件夹要删除,如下面的问题所示
我正在使用IntelliJ IDEA(IDE),SmartGWT EE(框架),JBoss AS(服务器)和JPA
这是错误日志: