- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在使用我的应用程序运行 Errai-jaxrs 时遇到了很大的问题,我从 GWT 开发模式中收到此错误:
org.jboss.errai.enterprise.client.jaxrs.api.ResponseException: Bad Request
at org.jboss.errai.enterprise.client.jaxrs.AbstractJaxrsProxy$1.onResponseReceived(AbstractJaxrsProxy.java:132)
at com.google.gwt.http.client.Request.fireOnResponseReceived(Request.java:287)
at com.google.gwt.http.client.RequestBuilder$1.onReadyStateChange(RequestBuilder.java:395)
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:474)
at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)
at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)
at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172)
at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessagesWhileWaitingForReturn(BrowserChannelServer.java:337)
at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:218)
at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:136)
at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:561)
at com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:269)
at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91)
at com.google.gwt.core.client.impl.Impl.apply(Impl.java)
at com.google.gwt.core.client.impl.Impl.entry0(Impl.java:213)
at sun.reflect.GeneratedMethodAccessor56.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:474)
at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)
at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)
at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172)
at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessages(BrowserChannelServer.java:292)
at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:546)
at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:363)
at java.lang.Thread.run(Thread.java:722)
在服务器端:
[INFO] Caused by: org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Unrecognized field "^EncodedType" (Class com.mycompany.client.shared.Customer), not marked as ignorable
[INFO] at [Source: org.mortbay.jetty.HttpParser$Input@115194d; line: 1, column: 18] (through reference chain: com.mycompany.client.shared.Customer["^EncodedType"])
[INFO] at org.codehaus.jackson.map.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:53)
[INFO] at org.codehaus.jackson.map.deser.StdDeserializationContext.unknownFieldException(StdDeserializationContext.java:267)
[INFO] at org.codehaus.jackson.map.deser.std.StdDeserializer.reportUnknownProperty(StdDeserializer.java:673)
[INFO] at org.codehaus.jackson.map.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:659)
[INFO] at org.codehaus.jackson.map.deser.BeanDeserializer.handleUnknownProperty(BeanDeserializer.java:1365)
[INFO] at org.codehaus.jackson.map.deser.BeanDeserializer._handleUnknown(BeanDeserializer.java:725)
[INFO] at org.codehaus.jackson.map.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:703)
[INFO] at org.codehaus.jackson.map.deser.BeanDeserializer.deserialize(BeanDeserializer.java:580)
[INFO] at org.codehaus.jackson.map.ObjectMapper._readValue(ObjectMapper.java:2704)
从堆栈跟踪来看,它看起来像是一个错误的请求。这个后端是 RestEasy + Guice,它配置得非常正确,因为在我尝试使用 errai-jaxrs 之前,我只是使用普通的 GWT RequestBuilder,它工作得很好。我不确定问题出在哪里,但这是我的代码:
CustomerService.java
@Path("/customerservice")
public interface CustomerService {
@GET
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Customer getCustomer(String id);
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.TEXT_PLAIN)
public String createCustomer(Customer Customer);
}
CustomerServiceImpl.java
@Singleton
public class CustomerServiceImpl implements CustomerService {
@Override
public Customer getCustomer(String id) {
return new Customer();
}
@Override
public String createCustomer(Customer Customer) {
return "1";
}
}
在客户端:
@Inject
private Caller<CustomerService> customerService;
@EventHandler("submit")
public void createCustomer(ClickEvent event) {
event.preventDefault();
Customer customer = new Customer();
customerService.call(new RemoteCallback<String>() {
@Override
public void callback(String response) {
Window.alert("Customer created: " + response);
}
}).createCustomer(customer);
}
可能是什么问题?
最佳答案
我可以从堆栈跟踪中看到,您正在使用 Jackson 在服务器端编码请求和响应数据,但客户端使用 Errai 的默认编码格式。
您必须决定是使用 Errai 的编码格式还是 Jackson。
Errai 编码格式的优点是它包含更多在线类型信息(例如您看到 Jackson 解析器提示的“^EncodedType”属性)。当您的 JAX-RS API 主要由 Errai 客户端使用时,这是最佳选择。这也是您能够通过线路发送此类对象的唯一方式:
@Portable class TypeWithPolymorphicField {
private Object foo = new Foo();
}
要在服务器端启用 Errai 编码(而不是 Jackson),您需要使用您的应用部署 errai-jaxrs-provider-[version].jar
。来自 Errai Reference Guide :
<dependency>
<groupId>org.jboss.errai</groupId>
<artifactId>errai-jaxrs-provider</artifactId>
<version>${errai.version}</version>
</dependency>
另一方面,如果您的 JAX-RS API 供非 Errai 客户端使用,他们可能会发现 Jackson 编码更加愉快和熟悉。如果您选择这样做,则需要告诉客户端使用 Jackson 编码而不是默认值。来自 Errai Reference guide :
The following options are available for activating Jackson marshalling on the client. Note that this is a client-side configuration, the JAX-RS endpoint is assumed to already return a Jackson representation (Jackson is supported by all JAX-RS implementations). The errai-jaxrs-provider.jar does not have to be deployed on the server in this case!
<script type="text/javascript">
erraiJaxRsJacksonMarshallingActive = true;
</script>or by using a JSNI method:
private native void setJacksonMarshallingActive(boolean active) /*-{
$wnd.erraiJaxRsJacksonMarshallingActive = active;
}-*/;or by simply invoking:
RestClient.setJacksonMarshallingActive(true);
最后注意:不要同时执行上述两项操作,否则您将遇到相反的问题!您必须将客户端或服务器配置为远离其自然默认值。
关于java - Errai-jaxrs - 错误请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16479366/
对于过去的 GWT 项目,我使用过这个 archtype用于创建 3 模块项目。它将客户端代码、服务器代码以及两者之间共享的代码分开。这允许更快的开发,因为您不必每次进行服务器端更改时都重新编译整个项
我正在搜索 GWT Design 来设置项目。我可以用 MVP(GWTP)或 JBoss Errai . 我还没有决定。有没有人经历过其中之一? 您可以给出这些框架的优缺点。 最佳答案 Errai 迄
我在使用我的应用程序运行 Errai-jaxrs 时遇到了很大的问题,我从 GWT 开发模式中收到此错误: org.jboss.errai.enterprise.client.jaxrs.api.Re
我正在尝试在我的 GWT 应用程序中使用 Errai 休息功能, 我查看了以下指南: http://errai-blog.blogspot.it/2011/10/jax-rs-in-gwt-with-
我真的不明白为什么 errai jax-rs 没有触发: 使用 @Inject private Caller myService; myService.call(new RemoteCallback(
我正在尝试弄清楚如何使用 Errai-UI 进行“选项卡”操作。 例如,如果选择的选项卡是#home,则显示Home模板,或者如果#about则显示AboutUs 显示模板。 我有这个入口点类: @T
任何人都可以帮助我理解为什么我的应用程序在运行时抛出此错误 mvn gwt:compile: [INFO] Compiling module org.jboss.errai.ui.demo.App [
我正在尝试升级 GWT 项目中的 Errai 版本。我们只使用 errai 总线,之前我们从 ServletContext 中获取 ErraiService 来获取 RequestDispatcher
我有一个包含两个选项的菜单,根据我选择的选项,我的应用程序应该显示 RepoNavBar 或 UserNavBar。这个类是 NavBar 的子类。 我有一个 CommonPage,其中包含所有项目中
基于这个 JIRA 问题: https://issues.jboss.org/browse/ERRAI-68 GAE 对 Errai 的支持是不可行的。 是否真的不可行或有解决方法: Errai UI
本文整理了Java中org.jboss.errai.reflections.vfs.ZipDir类的一些代码示例,展示了ZipDir类的具体用法。这些代码示例主要来源于Github/Stackover
如果我有 JBoss Errai(我下载它是为了进行服务器推送),使用 GWT-RPC 进行客户端调用还有什么好处吗?或者,如果我只对客户端和服务器端的所有内容使用 Errai 调用,我会不会失去任何
我有一个包含多个 gwt 模块的项目。其中一些模块依赖于其他模块,因此我必须继承我的gwt.xml中的依赖项。在其中一个模块中,我遇到了一个问题,当我继承我创建的其他依赖项模块时,它会抛出类似于以下异
我发现很难让 JSNI 直接与 Errai 一起工作,例如以下代码: private static native void _createCallOut(JavaScriptObject callou
如何在 Errai 服务实现(服务器端)中注入(inject) HttpServletRequest 以便与如下代码一起使用: @Override public void login(String u
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
Errai 使用 GWT“插入”Web 开发。但是,我想利用我的 Spring 代码库在我的 Web 应用程序后端服务中使用。 服务如: @Service public class ProductSe
我在使用基于 Errai-UI 的 GWT 应用程序时遇到一些问题,尝试创建带有导航选项卡的页面。我面临的问题是导航和页脚没有被渲染,而且我的应用程序 WelcomePage 似乎是浏览器上唯一渲染的
我正在尝试制作 XEditable Jquery-ui 插件与 GWT/Errai 配合使用。然而,当点击所谓的“x-editable”字段时,什么也没有发生。我的代码可能有什么问题: 这是我的代码:
我在尝试使用 Errai 2.3.2 从 Java 调用 JS 函数时遇到问题我正在使用 Bootstrap 开关,我需要调用 JS 函数才能激活它。我需要在创建页面并将所有元素附加到 DOM 元素后
我是一名优秀的程序员,十分优秀!