标签: requestfactory

如何在具有不同接收器实现的情况下附加请求上下文

在Google io 2011中,David Chandler提到您可以使用append()方法链接不同的请求上下文,但在实践中,我不知道如何在它们具有不同的接收器时将它们链接起来,使用to()然后触发( )?

请帮忙.

gwt requestfactory

3
推荐指数
1
解决办法
730
查看次数

创建GWT ValueProxy并发送到服务方法

我想使用ValueProxy参数调用Service上的方法 - 如果我执行personProxy.setName("test")然后request.callFn(personProxy).fire(),则name属性不会传递给服务器.

在设置名称或其他内容之前,我应该执行request.edit(personProxy)吗?

这是我正在使用的实现:

//somewhere in MyActivity.java ...
PersonProxy cp = requestFactory.myRequest().create(PersonProxy.class);
cp.setName("John Doe");
requestFactory.myRequest().doSomething(cp,"extra_param_value").fire(new Receiver<List<PersonProxy>>() {

    @Override
    public void onSuccess(List<PersonProxy> response) {
        //response from server...
    }

});

//------------------------
public interface MyRequestFactory extends RequestFactory {
    MyRequest myRequest();
}

//------------------------
@ServiceName(value="com.server.MyService", locator="com.server.MyServiceLocator")
public interface MyRequest extends RequestContext {
    public Request<Integer> doSomething(PersonProxy param, String extraParam);
}

//------------------------
public class MyServiceLocator implements ServiceLocator {

    public Object getInstance(Class<?> clazz) {
        return new MyService();
    }

}

//------------------------
public class MyService {
    public Integer doSomething(Person …
Run Code Online (Sandbox Code Playgroud)

gwt requestfactory

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

GWT 2.4中客户端上的RequestFactory服务继承

GWT 2.4在客户端上提供服务继承(问题6234,问题6035).

我一直在等待这个未来很长一段时间,因为它在客户端上节省了大量重复的代码.我已经开始实施它,但是因为混合成功.

这是我的代码:

public interface BaseEntityRequest<T>
{
    Request<Void> put(T entity);
    Request<List<T>> getAllOrderBy(String propertyName);
    Request<List<T>> getRangeAndFilter(int limit,int offset, QueryInfoProxy queryInfo);
}

@Service(value = EgdDao.class, locator = DaoServiceLocator.class)
public interface EgdRequest extends RequestContext, BaseEntityRequest<EgdProxy>
{
    Request<Void> exportToExcel(QueryInfoProxy queryInfo, String userName);
}
Run Code Online (Sandbox Code Playgroud)

到目前为止,getAllOrderBygetRangeAndFilter做工精细,但put(T entity)没有.

我在控制台中收到以下错误:

[ERROR] Unexpected error
java.util.NoSuchElementException
Run Code Online (Sandbox Code Playgroud)

这将在接收器onFailure ServerFailure消息中返回:

Error 500 INTERNAL_SERVER_ERROR
HTTP ERROR 500
Problem accessing /gwtRequest. Reason:
INTERNAL_SERVER_ERROR
Run Code Online (Sandbox Code Playgroud)

我可以看到,唯一的原因是put,当其他方法不工作时,它使用通用参数T.当我putEgdRequest界面中移动方法(使用EgdProxy作为参数而不是T)时,它开始工作,所以我知道我的服务器代码很好.

有没有人知道如何正确实现这一点? …

gwt requestfactory

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

保存图形时冻结GWT Autobean

我正在使用GWT 2.4编辑器并请求工厂框架.我有一个模型Trip,它有一个地址'origin'和一个Address'destination'.通过UI创建Trip时,会自动创建这两个地址并将其分配给Trip.用户填写详细信息并保存.出于某种原因,我在尝试持久化到服务器时遇到"autobean冻结错误".此代码在GWT 2.3中有效,我无法切换回来.我希望它不是GWT 2.4中的错误.以下是我正在做的一些示例代码:

RequestContext request = requestFactory.request();
TripProxy trip = request.create(TripProxy.class);
trip.setOrigin(request.create(AddressProxy.class));
trip.setDestination(request.create(AddressProxy.class));
driver.edit(trip, request);
this.trip = trip;

// … on save button clicked (different method)

RequestContext request = driver.flush();
request.save(trip).with(driver.getPaths()).fire(someReceiverImpl);
Run Code Online (Sandbox Code Playgroud)

结果是:

java.lang.IllegalStateException: The AutoBean has been frozen
at com.google.web.bindery.autobean.shared.impl.AbstractAutoBean.checkFrozen(AbstractAutoBean.java:195)
at com.google.web.bindery.autobean.shared.impl.AbstractAutoBean.setProperty(AbstractAutoBean.java:270)
at sun.reflect.GeneratedMethodAccessor53.invoke(Unknown Source)
Run Code Online (Sandbox Code Playgroud)

调用fire成功完成但在requestfactory内的某处,抛出上述错误.奇怪的是,实体保存在服务器上,但不强制执行验证.当我简化模型并删除地址关联时,验证和保存工作.我的主要问题是autobean冻结错误; 验证的东西是次要的.

编辑:经过进一步的调查,我发现实体正在使服务器正常,并按预期持续存在.它返回时抛出上述异常.AddressProxy是一个ValueProxy,它看起来像RF不喜欢Trip带回这些关联.返回null'修复'问题,但这显然不会长期工作.

java gwt gwt2 requestfactory

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

RequestFactory:error.getExceptionType()在Receiver#onFailure中返回null

在服务器端我有:

public void throwException() throws Exception {
        throw new NullPointerException("fslkdjflks");
}
Run Code Online (Sandbox Code Playgroud)

在客户端我有:

_requestFactory.myService().throwException().fire(new Receiver<Void>() {

            @Override
            public void onSuccess(Void response) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onFailure(ServerFailure error) {
                // TODO Auto-generated method stub
                Window.alert(error.getExceptionType() + " " + error.getMessage());

            }

        });
Run Code Online (Sandbox Code Playgroud)

error.getExceptionType()返回null,而不是异常的类型.知道为什么吗?

谢谢,吉拉德.

gwt requestfactory

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

使用GWT Request Factory上传文件

是否可以通过请求工厂上传文件?简单的例子将非常有用.

java gwt file-upload requestfactory

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

GWT RequestFactory返回一个null对象

我正在尝试使用GWTs RequestFactory(目前)做一些非常简单的事情并返回一个对象列表,每个对象包含一些数据和另一个对象.我似乎无法获得我的其他对象 - 相反,我总是得到null.

我的代码看起来像这样......

我有一些UserMessage对象,每个对象都包含一个Message对象.

UserMessage

@Entity
public class UserMessage implements Serializable {

  private static final long serialVersionUID = 1L;

  @Id
  @GeneratedValue
  private Long id;

  @Version
  private Integer version = 0;

  @ManyToOne
  @JoinColumn(name = "messageId")
  private Message message;

  private String user;

  private int priority;

  private boolean read;

  private Date expiry;

  private boolean sent;

  ... getter/setters etc
Run Code Online (Sandbox Code Playgroud)

信息

  @Entity(name = "UUMessage")
  public class Message implements Serializable {

  private static final long serialVersionUID = 1L;

  @Id
  @GeneratedValue
  private Long id;

  @Version …
Run Code Online (Sandbox Code Playgroud)

java gwt requestfactory

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

GWT RequestFactory中的会话处理

有人可以向我展示一个关于使用GWT RequestFactory进行会话处理的简单示例.也许这很简单,但我无法弄清楚.

我在某处读到了我应该使用的ThreadLocal.好吧,我做到了.这是我的代码:

public class EC_RequestFactoryServlet extends RequestFactoryServlet {
private static final ThreadLocal < HttpServletRequest > uniqueReq =
    new ThreadLocal < HttpServletRequest > () {
        @Override protected HttpServletRequest initialValue() {
            return null;
        }
};

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException
{
    uniqueReq.set(req);
    super.doPost(req, res);
}

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException
{
    uniqueReq.set(req);
    super.doGet(req, res);
}}
Run Code Online (Sandbox Code Playgroud)

这节省了会话:

public class Authentication {
public static void SetLoggedInUserToSession(User user) {
    EC_RequestFactoryServlet.getThreadLocalRequest()
            .getSession().setAttribute("LOGGED_IN_USER", user);
}

public …
Run Code Online (Sandbox Code Playgroud)

session gwt requestfactory

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

带有GWT Requestfactory的Http状态码

如果我使用GWT Requestfactory,那么向客户端发送"404未找到"或"401未授权"的推荐方法是什么?

问候安德烈亚斯

gwt requestfactory

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

在Gwt的请求工厂中,什么是ReportableException:请求的类型不是default-instantiable

今天我们开始在生产中遇到这个未知错误

2012 02 06 08:19:39,270 ERROR GWTSpringRequestFactoryServlet$CustomExceptionHandler:34 – Server error
com.google.web.bindery.requestfactory.server.ReportableException: The requested type is not default-instantiable
at com.google.web.bindery.requestfactory.server.ServiceLayerDecorator.report(ServiceLayerDecorator.java:255)
at com.google.web.bindery.requestfactory.server.ReflectiveServiceLayer.createDomainObject(ReflectiveServiceLayer.java:94)
at com.google.web.bindery.requestfactory.server.ServiceLayerDecorator.createDomainObject(ServiceLayerDecorator.java:51)
at com.google.web.bindery.requestfactory.server.LocatorServiceLayer.createDomainObject(LocatorServiceLayer.java:41)
at com.google.web.bindery.requestfactory.server.ServiceLayerDecorator.createDomainObject(ServiceLayerDecorator.java:51)
at com.google.web.bindery.requestfactory.server.RequestState.getBeansForIds(RequestState.java:238)
at com.google.web.bindery.requestfactory.server.RequestState.getBeansForPayload(RequestState.java:147)
at com.google.web.bindery.requestfactory.server.SimpleRequestProcessor.processOperationMessages(SimpleRequestProcessor.java:501)
at com.google.web.bindery.requestfactory.server.SimpleRequestProcessor.process(SimpleRequestProcessor.java:210)
at com.google.web.bindery.requestfactory.server.SimpleRequestProcessor.process(SimpleRequestProcessor.java:127)
at com.google.web.bindery.requestfactory.server.RequestFactoryServlet.doPost(RequestFactoryServlet.java:133)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:368)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:100)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:78)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:35)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:177)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at …
Run Code Online (Sandbox Code Playgroud)

gwt requestfactory

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

单个控制器实例不能用于处理多个请求 - Autofac

Autofac.ContainerBuilder在我的ASP.Net MVC 4应用程序中使用,这使得默认控制器出现问题以生成多个实例.

我试着这样处理它

 builder.RegisterType<AccountController>().As<IController>().PreserveExistingDefaults();
Run Code Online (Sandbox Code Playgroud)

但没用

protected void Application_Start()
    {

      var dataPath = "~/App_Data/" + ConfigurationManager.AppSettings["Blog_Site"];

        var builder = new ContainerBuilder();

        builder.RegisterType<ExtensibleActionInvoker>().As<IActionInvoker>().InstancePerHttpRequest();
        builder.RegisterControllers(Assembly.GetExecutingAssembly()).InjectActionInvoker().InstancePerHttpRequest();

        builder.RegisterModelBinders(Assembly.GetExecutingAssembly());
        builder.RegisterType<JsonRepository>().As<IRepository>().InstancePerLifetimeScope().WithParameter("dataPath", HttpContext.Current.Server.MapPath(dataPath));
        builder.RegisterType<ConfigService>().As<IConfigService>().InstancePerLifetimeScope();
        builder.RegisterType<EntryService>().As<IEntryService>().InstancePerLifetimeScope();
        builder.RegisterType<UserService>().As<IUserService>().InstancePerLifetimeScope();
        builder.RegisterType<MessageService>().As<IMessageService>().InstancePerLifetimeScope();
        builder.RegisterType<CloudService>().As<ICloudService>().InstancePerLifetimeScope();
        builder.RegisterType<Services>().As<IServices>().InstancePerLifetimeScope();

        _containerProvider = new ContainerProvider(builder.Build());

        ControllerBuilder.Current.SetControllerFactory(new AutofacControllerFactory(ContainerProvider));

        AreaRegistration.RegisterAllAreas();
        WebApiConfig.Register(GlobalConfiguration.Configuration);
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(System.Web.Optimization.BundleTable.Bundles);
        AuthConfig.RegisterAuth();

        HtmlHelper.ClientValidationEnabled = true;
        HtmlHelper.UnobtrusiveJavaScriptEnabled = true;

        // Quartz.NET scheduler
        ISchedulerFactory factory = new StdSchedulerFactory();
        var scheduler = factory.GetScheduler();
        scheduler.JobFactory = new AutofacJobFactory(ContainerProvider);
        scheduler.Start();
    }
Run Code Online (Sandbox Code Playgroud)

当我尝试访问默认控制器帐户/管理我得到以下错误.

这我是如何看待的

  @Html.Action("RemoveExternalLogins")

    <h3>Add an external login</h3> …
Run Code Online (Sandbox Code Playgroud)

controller autofac requestfactory asp.net-mvc-4

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

为非实体请求实现GWT RequestFactory服务

我有以下Java servlet执行我称之为" 添加服务 ":

public class AdditionService extends HttpServlet {
    @Override
    public void doGet(HttpServletRequest request, HttpServletResponse response) {
        // The request will have 2 Integers inside its body that need to be
        // added together and returned in the response.
        Integer addend = extractAddendFromRequest(request);
        Integer augend = extractAugendFromRequest(request);

        Integer sum = addend + augend;

        PrintWriter writer = response.getWriter();
        writer.write(sum);
    }
}
Run Code Online (Sandbox Code Playgroud)

我试图让GWT的RequestFactory做同样的事情(在应用服务器上添加两个数字并将总和作为响应返回)使用ValueProxyAdditionService,并且遇到了一些问题.

这是AdditionRequest(客户端层),它是一个包含两个要添加的整数的值对象:

// Please note the "tier" (client, shared, server) I have placed …
Run Code Online (Sandbox Code Playgroud)

java gwt server-communication requestfactory

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