使用Generators创建类时,可以发现类型的所有子类.您可以在GWT Showcase源代码中找到此技术(请参阅完整代码):
JClassType cwType = null;
try {
cwType = context.getTypeOracle().getType(ContentWidget.class.getName());
} catch (NotFoundException e) {
logger.log(TreeLogger.ERROR, "Cannot find ContentWidget class", e);
throw new UnableToCompleteException();
}
JClassType[] types = cwType.getSubtypes();
Run Code Online (Sandbox Code Playgroud)
我想做类似的事情,而不是扩展一个类(或实现一个接口)
public class SomeWidget extends ContentWidget { ... }
Run Code Online (Sandbox Code Playgroud)
我还可以通过注释小部件来做到这一点吗?
@MyAnnotation(...)
public class SomeWidget extends Widget { ... }
Run Code Online (Sandbox Code Playgroud)
然后找到所有使用@MyAnnotation注释的小部件?我找不到像这样的方法JAnnotationType.getAnnotatedTypes()
,但也许我只是盲目的?
注意:我能够使用Google Reflections库,reflections.getTypesAnnotatedWith(SomeAnnotation.class)
但我更喜欢使用GeneratorContext,特别是因为在DevMode中重新加载应用程序时效果更好.
我正在玩一些原始的XmlHttpRequestObjects + Comet Long Polling.(通常,我会让GWT或其他框架为我处理此问题,但我想了解更多信息.)
我写了以下代码:
function longPoll() {
var xhr = createXHR(); // Creates an XmlHttpRequestObject
xhr.open('GET', 'LongPollServlet', true);
xhr.onreadystatechange = function () {
if (xhr.readyState == 4) {
if (xhr.status == 200) {
...
}
if (xhr.status > 0) {
longPoll();
}
}
}
xhr.send(null);
}
...
<body onload="javascript:longPoll()">...
Run Code Online (Sandbox Code Playgroud)
我将longPoll()
一个if语句包装起来status > 0
,因为我遇到了,当我离开页面时(通过浏览其他地方或重新加载它),最后一个不必要的彗星调用被发送.[在Firefox上,它甚至在进行页面重新加载时会导致严重的问题,由于某些原因我还没有完全理解.]
问题:这是status
检查处理此问题的正确方法,还是有更好的解决方案?
当创建一个GXT SimpleComboBox(作为公认的答案在这里),
final FormPanel fp = new FormPanel();
SimpleComboBox<String> combo = new SimpleComboBox<String>();
combo.add("One");
combo.add("Two");
combo.add("Three");
combo.setSimpleValue("Two"); // I'd like to preselect that value
fp.add(combo);
RootPanel.get().add(fp);
Run Code Online (Sandbox Code Playgroud)
我的组合框只包含值"Two".从组合框中完全删除值"一"和"三".当我删除该行时,这不会发生combo.setSimpleValue("Two");
我正在使用GXT 2.2.3和GWT 2.2.0(在Linux/Firefox和Linux/Chrome上测试).这是一个错误/它是否适用于旧版本的GXT/GWT,或者我做错了什么?
我接受了答案,它解决了问题:添加行
combo.setTriggerAction(TriggerAction.ALL);
Run Code Online (Sandbox Code Playgroud)
但我还在寻找解释!
我尝试按照官方说明在开发人员模式下运行大型GWT项目,但是我做错了什么,或者这不适用于当前版本的GWT?
我得到的错误是:
“对于类型MyData,未定义方法setA(int)”。
MyData很简单:
@Data
public class MyData {
private int a;
}
Run Code Online (Sandbox Code Playgroud)
我指定
-javaagent:/path/to/lombok.jar=ECJ
在我的Eclipse运行配置中(作为VM参数)。
我也试着和
-Xbootclasspath / p:/path/to/lombok.jar
,以及从我的ant文件等启动开发模式。
问题是,我主要只是在猜测整个安装程序应该如何工作,因此,我想问一个正确的安装程序是什么样的,而不是对我的错误尝试进行故障排除?
该卡珊德拉2.0文档包含原子性的以下内容:
例如,如果使用复制因子为3的写入一致性级别QUORUM,Cassandra会将写入复制到群集中的所有节点,并等待来自两个节点的确认.如果在其中一个节点上写入失败但在另一个节点上成功,则Cassandra报告无法复制该节点上的写入.但是,在另一个节点上成功的复制写入不会自动回滚.
因此,写请求被发送到3个节点,我们正在等待2个ACK.假设我们只收到1个ACK(超时前).所以很清楚,如果我们以一致性ONE读取,我们可以读取该值,好的.
但以下哪一项陈述也属实:
我从 angular.io 网站分叉了本教程: https: //angular.io/start
其中一个步骤是创建一个新组件,因此我右键单击应用程序文件夹,但没有像其网站上的屏幕截图中所示的“Angular Generator”选项。我缺少什么?
我应该看到这个:
有时需要这种(相对奇怪的外观)语法来避免类型不匹配.但实际上这个语法的名称是什么?
Google Guava的使用示例(r07):
ImmutableMap定义了一个方法
public static <K, V> Builder<K, V> builder()
Run Code Online (Sandbox Code Playgroud)
它可以像这样使用:
ImmutableMap<String, String> map =
ImmutableMap.<String, String>builder().put("a", "A").build();
Run Code Online (Sandbox Code Playgroud)
这是内联版本的方式:
Builder<String, String> builder = ImmutableMap.builder();
ImmutableMap<String, String> map = builder.put("a", "A").build();
Run Code Online (Sandbox Code Playgroud) 使用GWT
,我已将我的服务器部署到Tomcat中.这样可以正常工作,但是当GWT
抛出异常时,Popup会向客户端显示异常的堆栈跟踪.
在开发模式下,这很好用.在Tomcat中,我得到了下面的堆栈跟踪.
为什么以及如何解决这个问题?
Run Code Online (Sandbox Code Playgroud)Unknown.Le(StackTraceCreator.java:168) Unknown.Jd(StackTraceCreator.java:421) Unknown.NT(Exception_FieldSerializer.java:16) Unknown.g1(SerializerBase.java:55) Unknown.b1(SerializerBase.java:112) Unknown.D$(AbstractSerializationStreamReader.java:119) Unknown.uAc(CustomException_FieldSerializer.java:39) Unknown.uBc(ServerSideException_FieldSerializer.java:12) Unknown.f1(SerializerBase.java:46) Unknown._0(SerializerBase.java:92) Unknown.D$(AbstractSerializationStreamReader.java:119) Unknown.B_(RequestCallbackAdapter.java:216) Unknown._o(Request.java:287)
在使用@Christian Kuetbach的回答后,这就是我现在得到的:
Unknown.com_google_gwt_core_client_impl_StackTraceCreator $ CollectorEmulated_ $ fillInStackTrace__Lcom_google_gwt_core_client_impl_StackTraceCreator $ CollectorEmulated_2Ljava_lang_Throwable_2V(StackTraceCreator.java:168)Unknown.java_lang_Throwable_Throwable__Ljava_lang_String_2Ljava_lang_Throwable_2V(StackTraceCreator.java:421)Unknown.com_google_gwt_user_client_rpc_StatusCodeException_StatusCodeException__ILjava_lang_String_2V(StatusCodeException.java:35)Unknown.com_google_gwt_user_client_rpc_impl_RequestCallbackAdapter_ $ onResponseReceived__Lcom_google_gwt_user_client_rpc_impl_RequestCallbackAdapter_2Lcom_google_gwt_http_client_Request_2Lcom_google_gwt_http_client_Response_2V(RequestCallbackAdapter.java:209)未知. com_google_gwt_http_client_Request_ $ fireOnResponseReceived__Lcom_google_gwt_http_client_Request_2Lcom_google_gwt_http_client_RequestCallback_2V(Request.java:287)Unknown.com_google_gwt_http_client_RequestBuilder $ 1_onReadyStateChange__Lcom_google_gwt_xhr_client_XMLHttpRequest _2V(RequestBuilder.java:395)Unknown.anonymous(XMLHttpRequest.java:287)
请帮忙!
parseInt("7em", 10);
7
在我测试的所有浏览器中返回[*].但我可以依靠这个吗?
我问的原因是,我想基于em执行一些计算,比如
/* elem1.style.top uses em units */
elem2.style.top = parseInt(elem1.style.top, 10) + 1 + "em";
Run Code Online (Sandbox Code Playgroud)
我可以使用正则表达式执行此操作,但parseInt更易于使用,并且可能更快一些.或者是否有另一种解决方案(也许使用jQuery)?
[*]到目前为止测试过:IE 6,IE 8,Safari 4,Firefox 3.6,Opera 10.5