我试图解析JSON字符串"{'test':'100.00'}"并使用GSON库获取值:100.00.我的代码看起来像这样:
String myJSONString = "{'test': '100.00'}";
JsonObject jobj = new Gson().fromJson(myJSONString, JsonObject.class);
String result = jobj.get("test").toString();
System.out.println(result);
Run Code Online (Sandbox Code Playgroud)
我的结果看起来像这样:"100.00",但我只需要100.00没有引号.怎么能这样做?
如果我打电话
$(".myClass")
Run Code Online (Sandbox Code Playgroud)
我得到了一系列元素.如果我现在想要将第一个元素作为jquery元素,我会做这样的事情:
$($(".myClass").get(0))
Run Code Online (Sandbox Code Playgroud)
所以我包装DOM-Element,我再次使用jQuery运算符从数组中获取.有没有更优雅的方式来做到这一点?一些get方法,例如返回一个jQuery元素?
我正在通过GWT Request Factory将对象列表传输到客户端.对象只包含几个字符串,列表只包含20个对象.要传输这个小数据列表,需要一秒钟.首先,我认为需要优化查询.但测量显示:
从数据库中检索对象只需要
300ms
转移到客户端总共需要一秒钟
1136ms
所以这似乎是请求工厂开销.我已经使用了自己的ServiceLayerDecorator并且已经覆盖了isLive()函数,所以它总是返回true.我可以采取任何其他措施加快速度并将性能提升到可接受的范围吗?
更新:
我创建了将我的实体对象数据复制到DTO并使用RPC传输它们以比较RPC和Request工厂性能的逻辑.如您所见,RPC逻辑要快得多.现在我想知道这是设计还是我的申请中存在缺陷.
20个转移对象:
Request factory: 1252 ms
RPC: 420 ms
28个转移对象:
Request factory: 1654 ms
RPC: 460 ms
78个转移对象:
Request factory: 3963 ms
RPC: 769 ms
================================================== ==========
UPDATE2
所以我编写了一个非常简单的示例应用程序,以确保我的应用程序没有任何过滤器或其他干扰组件.应用程序从服务器加载10个带有4个String字段的对象.我使用Request工厂和RPC完成了它并停止了时间.
代码可以在这里找到:https: //github.com/jan10101/requstFactoryVSRPC
这里的生活演示:http: //requestfactorytest.appspot.com/
测试应用程序证实了我的观察结果:与RPC性能相比,请求工厂性能非常糟糕.在开发模式下,RPC的性能大约高出40倍,在生产模式下仍然是4倍.我是第一个注意到性能问题的人吗?
以下屏幕截图显示了测试结果,如果您不想自己尝试.
开发模式下的结果:

生产代码的结果(在app引擎上):

如果我在最新的eclipse版本(kepler)中创建一个新的GWT 2.6项目,我总是收到以下警告消息:
The file cannot be validated as the XML definition "http://google-web-toolkit.googlecode.com/svn/tags/
2.6.0/distro-source/core/src/gwt-module.dtd" that is specified as describing the syntax of the file
Run Code Online (Sandbox Code Playgroud)
在我的Module.gwt.xml行旁边:
<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.6.0//EN"
"http://google-web-toolkit.googlecode.com/svn/tags/2.6.0/distro-source/core/src/gwt-module.dtd">
Run Code Online (Sandbox Code Playgroud)
该文件(" http://google-web-toolkit.googlecode.com/svn/tags/2.6.0/distro-source/core/src/gwt-module.dt ")是否可用,如果我在浏览器吗?
或者这个错误告诉我什么?我该如何解决这个警告?
我刚安装了新的eclipse kepler(eclipse 4.3).它向我展示了来自第三方JavaScript库的数百个错误和警告.
我尝试通过取消选中"Preferences/JavaScript/Validator"中的"启用JavaScript语义验证"来完全禁用javasscript验证,但没有效果 - 仍会显示错误和警告.
还有其他选项可以禁用它们,还是只是一个错误?

其他人可以确认这个问题还是仅仅是我?:)
编辑1: Lavie Tobey指出,我应该将所有验证设置为"忽略" - >没有帮助

编辑2: Jim Garrison指出,我应该禁用项目的构建器 - >实际上我没有一个javascript构建器.已禁用所有测试目的,但没有帮助:

如果我在普通浏览器中打开我的(GWT)页面,一切正常.身体占据整个宽度,内容很好地居中.但是,如果我在手机上试试这个,身体不会占据整个宽度,因此内容不会居中.
我无法找出为什么会这样显示.此外,为body和html标记添加100%宽度并不能解决问题.
有没有办法在移动设备上很好地工作?
该页面可以在以下网址获得:http://www.vegantastic.de/

我想用mockito测试我的servlet.我也想知道服务器输出是什么.所以如果servlet写出这样的东西:
HttpServletResponse.getWriter().println("xyz");
Run Code Online (Sandbox Code Playgroud)
我想把它写成文本文件.我为HttpServletResponse创建了模拟,并告诉Mockito如果调用了HttpServletResponse.getWriter(),它应该返回我的自定义PrintWriter:
HttpServletResponse resp = mock(HttpServletResponse.class);
PrintWriter writer = new PrintWriter("somefile.txt");
when(resp.getWriter()).thenReturn(writer);
Run Code Online (Sandbox Code Playgroud)
生成文本文件,但它是空的.我怎样才能使这个工作?
编辑:
@Jonathan:这实际上是真的,嘲笑作家也是一个更清洁的解决方案.解决了这个问题
StringWriter sw = new StringWriter();
PrintWriter pw =new PrintWriter(sw);
when(resp.getWriter()).thenReturn(pw);
Run Code Online (Sandbox Code Playgroud)
然后我可以检查StringWriter的内容,而不必处理文件.
我喜欢让谷歌机器人抓取我的GWT-App.我找到了这篇文章(https://developers.google.com/webmasters/ajax-crawling/).它声明应该有一个servlet过滤器,它提供与谷歌机器人不同的视图.但这怎么可行呢?如果我使用例如活动和位置模式,那么页面更改仅在客户端,并且没有涉及servlet - > servlet过滤器在此处不起作用.
有人可以给我一个解释吗?或者是否有另一个针对gwt定制的好教程如何做到这一点?
我正在尝试设置Hibernate.但是当我尝试使用以下代码创建会话工厂时:
Configuration configuration = new Configuration();
configuration.configure();
serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
sessionFactory = configuration.buildSessionFactory(serviceRegistry);
Run Code Online (Sandbox Code Playgroud)
我收到错误:
org.hibernate.cfg.beanvalidation.IntegrationException: Error activating Bean Validation integration
at org.hibernate.cfg.beanvalidation.BeanValidationIntegrator.integrate(BeanValidationIntegrator.java:156)
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:303)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1760)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: java.lang.NoSuchMethodError: javax.validation.spi.ConfigurationState.getParameterNameProvider()Ljavax/validation/ParameterNameProvider;
at org.hibernate.validator.internal.engine.ValidatorFactoryImpl.<init>(ValidatorFactoryImpl.java:113) …Run Code Online (Sandbox Code Playgroud) java validation hibernate hibernate-validator bean-validation
我创建了一个代码模板来添加记录器和相应的导入:
${:import(org.apache.log4j.Logger)}
private static final Logger logger = Logger.getLogger(${enclosing_type}.class);
Run Code Online (Sandbox Code Playgroud)
如果我现在添加它,记录器总是从行的开头开始,即使我的光标已经缩进了。有没有办法强制放置在光标位置?
这是一个屏幕截图来显示我的意思:

====>>>>

编辑:格罗夫的回答在这个特定案例中有所帮助。但是这个例子怎么样呢?我还想向记录器添加评论。如果我在同一行中定义这样的模板,那么记录器实际上会与注释出现在同一行中。
${:import(org.apache.log4j.Logger)}
/**
* Logger
*/ private static final Logger logger = Logger.getLogger(${enclosing_type}.class);
Run Code Online (Sandbox Code Playgroud) java ×7
gwt ×3
validation ×3
eclipse ×2
javascript ×2
servlets ×2
css ×1
doctype ×1
dom ×1
gson ×1
gwt-rpc ×1
hibernate ×1
html ×1
indentation ×1
jquery ×1
json ×1
mobile ×1
mocking ×1
mockito ×1
parsing ×1
performance ×1
seo ×1
unit-testing ×1
word-wrap ×1
xml ×1