在gwt中使用config.groovy获取用户首选项

时间:2016-08-17 14:00:21

标签: grails gwt

我有一个gwt和grails遗留应用程序,我升级和修改..它的预订日历基本上有不同的"观点" ...我遇到的问题是我想要的用户能够在登录时为自己选择一个默认视图。我之前使用grails only应用程序完成此操作但是gwt非常不同..我可以将一些东西从config.groovy传递给gwt部分选择要显示的视图...并且此视图不像grails视图那样查看...就像餐馆一样。用户可能只想查看特定餐厅的预订而不是默认的所有餐厅餐馆

1 个答案:

答案 0 :(得分:3)

也许不是您问题的直接答案,但您可以制作一个普通的GWT远程服务UserPreferencesService来存储用户偏好

public interface UserPreferencesService extends RemoteService {
    List<Restaurant> getRestaurants(Account user);
    void setRestaurants(Account user, List<Restaurant> restaurants);
}

在您的切入点,您可以决定您向用户显示的视图类型

public final class Application implements EntryPoint {
    private AuthServiceAsync authService = 
        GWT.create(AuthService.class);
    private UserPreferencesAsync preferencesService =
        GWT.create(UserPreferencesService.class);

    @Override
    public void onModuleLoad() {
        // handle login
        authService.getAccount(new Callback<Account>() {
            @Override
            public void onSuccess(final Account account) {
                // check if user have a preferred restourants
                preferencesService.getRestaurants(account, 
                    new Callback<Account>() {
                        @Override
                        public void onSuccess(final List<Restaurant> restaurants) {
                            // user did not select any restaurants yet. 
                            // Show a selection widget
                            if (restaurants.isEmpty) {
                                RestaurantSelectorWidget widget =
                                    new RestaurantSelectorWidget();

                                // your custom handler here
                                widget.addHandler(new Handler() {
                                    @Override
                                    public void onSelected(/*...*/) {
                                        // save user preferences
                                        // and switch to normal view
                                    }
                                })
                                RootPanel.get("container")
                                         .add(widget);
                            } else {
                                // show normal view
                            }
                        }
                    }
                }
            }
        }
    }
}

此外,您可以查看this插件,它会为grails添加GWT支持。