小编Chr*_*her的帖子

是否可以使用GWT GeneratorContext查找使用@MyAnnotation注释的所有类?

使用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中重新加载应用程序时效果更好.

gwt

6
推荐指数
1
解决办法
1115
查看次数

Comet(长轮询)和XmlHttpRequest状态

我正在玩一些原始的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检查处理此问题的正确方法,还是有更好的解决方案?

javascript ajax comet xmlhttprequest long-polling

5
推荐指数
1
解决办法
3604
查看次数

SimpleComboBox的GXT(Ext GWT)问题

当创建一个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)

但我还在寻找解释!

java gwt gxt

5
推荐指数
2
解决办法
7948
查看次数

我可以在开发模式下将Lombok与GWT一起使用吗?

我尝试按照官方说明在开发人员模式下运行大型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文件等启动开发模式。

问题是,我主要只是在猜测整个安装程序应该如何工作,因此,我想问一个正确的安装程序是什么样的,而不是对我的错误尝试进行故障排除?

java gwt lombok

5
推荐指数
1
解决办法
1888
查看次数

卡桑德拉的原子性和"回滚"

卡珊德拉2.0文档包含原子性的以下内容:

例如,如果使用复制因子为3的写入一致性级别QUORUM,Cassandra会将写入复制到群集中的所有节点,并等待来自两个节点的确认.如果在其中一个节点上写入失败但在另一个节点上成功,则Cassandra报告无法复制该节点上的写入.但是,在另一个节点上成功的复制写入不会自动回滚.

因此,写请求被发送到3个节点,我们正在等待2个ACK.假设我们只收到1个ACK(超时前).所以很清楚,如果我们以一致性ONE读取,我们可以读取该值,好的.

但以下哪一项陈述也属实:

  • 可能会发生写入已持久存储在第二个节点上,但节点的ACK丢失了?(注意:即使读取一致性QUORUM,也可能导致读取值!)
  • 可能会发生写入稍后会持续到第二个节点(例如由于提示切换)?(注意:即使读取一致性QUORUM,也可能导致读取值!)
  • 写入持久存储在第二个节点上是不可能的,写入的值最终会通过ReadRepair从节点中删除?
  • 写入是持久存储在第二个节点上是不可能的,但是有必要执行手动"撤消"操作吗?

atomicity cassandra nosql

5
推荐指数
1
解决办法
1201
查看次数

为什么 Stackblitz 上的 Angular Generator 选项不可用?

我从 angular.io 网站分叉了本教程: https: //angular.io/start

其中一个步骤是创建一个新组件,因此我右键单击应用程序文件夹,但没有像其网站上的屏幕截图中所示的“Angular Generator”选项。我缺少什么?

在此输入图像描述

我应该看到这个:

在此输入图像描述

angular stackblitz

5
推荐指数
1
解决办法
1051
查看次数

泛型语法的名称是什么:"X.<String,String> method()"

有时需要这种(相对奇怪的外观)语法来避免类型不匹配.但实际上这个语法的名称是什么?

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)

java generics syntax

4
推荐指数
1
解决办法
117
查看次数

为什么Tomcat无法显示实际的堆栈跟踪?

使用GWT,我已将我的服务器部署到Tomcat中.这样可以正常工作,但是当GWT抛出异常时,Popup会向客户端显示异常的堆栈跟踪.

在开发模式下,这很好用.在Tomcat中,我得到了下面的堆栈跟踪.

为什么以及如何解决这个问题?

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)
Run Code Online (Sandbox Code Playgroud)

在使用@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)

请帮忙!

java gwt tomcat

4
推荐指数
2
解决办法
1554
查看次数

Javascript:带有尾随字符的parseInt()

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

javascript jquery

2
推荐指数
1
解决办法
1000
查看次数