小编Zal*_*aka的帖子

GWT在新选项卡中打开页面

我正在开发GWT应用程序,我使用

com.google.gwt.user.client.Window.open(pageUrl, "_blank", "");
Run Code Online (Sandbox Code Playgroud)

打开新页面.并且在调用时会打开一个新选项卡,例如,在按钮单击后直接调用.但我决定在打开新页面之前在服务器上进行一些验证,并将调用上面提到的方法放到

public void onSuccess(Object response) {
}
Run Code Online (Sandbox Code Playgroud)

它开始在新窗口中打开页面而不是新标签(这仅适用于Chrome,其他浏览器仍然在新标签中打开它).

有谁能够帮我?


我建立了一个小例子来说明问题:

    button.addClickHandler(new ClickHandler() {
        public void onClick(ClickEvent event) {
            Window.open("http://www.google.com/", "_blank", "");
            MySampleApplicationServiceAsync serviceAsync = GWT.create(MySampleApplicationService.class);
            serviceAsync.getMessage("Hello, Server!", new AsyncCallback() {

                public void onFailure(Throwable caught) {
                    Window.alert("ERROR");
                }

                public void onSuccess(Object result) {
                    Window.open("http://www.bing.com/", "_blank", "");
                }
            }
            );
        }
    });
Run Code Online (Sandbox Code Playgroud)
  • Firefox(3.6.8)在新选项卡中打开两个页面.
  • Chrome(6.0)在新标签页中打开"google.com",在新窗口中打开"bing.com"
  • Opera(10.10)在新标签中打开.
  • IE(8.0)在新Windows中打开.

我把igorbel的答案标记为唯一正确的cos我没有找到任何适当的方法在所有情况下指定相同的行为.


javascript java gwt google-chrome

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

转换java对象的框架

我正在研究将数据库实体转换为DTO对象的项目.为此,每个转换使用一个特殊的转换器类.


我正在提供我们正在做的事情的简化示例.我故意错过了setter/getters和其他一些代码清晰度的东西.

所以这里是持久性实体:

class Car {
    String number;
    Driver driver;
}

class Driver {
    String name;
    License license;
}

class License {
    String serial;
    Date expired;
} 
Run Code Online (Sandbox Code Playgroud)

并假设我们需要遵循DTO对象:

class DriverDTO {
    String name;
    String carNumber;
    String licenseSerial;
}
Run Code Online (Sandbox Code Playgroud)

我们创建以下转换器类:

class DriverDTOConverter {
    DriverDTO convert(Car car) {
        DriverDTO driverDto = new DriverDTO();
        driverDto.carNumber = car.number;
        driverDto.name = car.driver.name;
        driverDto.licenseSerial = car.driver.license.serial;
        return driverDto;
    }
}
Run Code Online (Sandbox Code Playgroud)

还有一个更复杂的例子:

class CarDTO {
    String number;
    String driverName;
    LicenseDTO driverLicense;
}

class LicenseDTO {
    String serial; …
Run Code Online (Sandbox Code Playgroud)

java persistence dto

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

GWT服务异常日志记录的最佳实践

我决定将日志系统添加到我的gwt服务层.首先,我想记录从该层抛出的所有异常.我有一个类似于Spring的ServletDispatcher的对象,它调用其他服务.我以为我可以在那里添加日志记录,但我意识到GWT服务将ServletResponse中的已检查异常包装起来并取消选中UnexpectedException.

任何人都可以分享他对这个问题的经验吗?记录所有GWT服务的已检查和未检查异常的最佳方法是什么.


我找到了建议扩展RemoteServiceServlet并覆盖默认异常流的解决方案.但我发现这个解决方案太费时间了.anybode知道任何更简单的变体吗?

java gwt logging spring exception

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

GWT.删除锚点部分网址

嗨,我正在使用GWT及其支持历史的"历史"课程.它非常方便,但如何从网址中删除锚点部分?例如:

我的基本网址:

http://www.mysuperwebsite.com/myapp
Run Code Online (Sandbox Code Playgroud)

使用应用程序时,我会移动到添加新历史记录项的位置.

在代码中:

History.newItem("funnygame");
Run Code Online (Sandbox Code Playgroud)

结果:

http://www.mysuperwebsite.com/myapp#funnygame
Run Code Online (Sandbox Code Playgroud)

我再换一次地方:

在代码中:

History.newItem("notsofunnygames");
Run Code Online (Sandbox Code Playgroud)

结果:

http://www.mysuperwebsite.com/myapp#notsofunnygames
Run Code Online (Sandbox Code Playgroud)

然后我想回到我的主页(http://www.mysuperwebsite.com/myapp).

应该在代码中放置什么?:

????
Run Code Online (Sandbox Code Playgroud)

回到:

http://www.mysuperwebsite.com/myapp
Run Code Online (Sandbox Code Playgroud)

有没有可以实现我的目标的标准方式?


如果我添加这样的东西:

History.newItem(""); 
Run Code Online (Sandbox Code Playgroud)

要么

History.newItem(null); 
Run Code Online (Sandbox Code Playgroud)

网址将成为

http://www.mysuperwebsite.com/myapp#
Run Code Online (Sandbox Code Playgroud)

这不是我喜欢的,我需要它没有尖锐的性格.

html javascript java gwt gwt-history

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

GWT DateTimeFormat反转时区值

考虑以下代码在GWT中运行:

import com.google.gwt.i18n.client.DateTimeFormat;
...
DateTimeFormat fullDateTimeFormat = DateTimeFormat.getFullDateTimeFormat();
Log.info(fullDateTimeFormat.format(date, TimeZone.createTimeZone(-120)));
Log.info(fullDateTimeFormat.format(date, TimeZone.createTimeZone(0)));
Log.info(fullDateTimeFormat.format(date, TimeZone.createTimeZone(180))); 
Run Code Online (Sandbox Code Playgroud)

假设它是格林威治时间16:00.

为什么我得到以下输出?

Monday, February 21, 2011 6:00:00 PM Etc/GMT-2
Monday, February 21, 2011 4:00:00 PM Etc/GMT
Monday, February 21, 2011 1:00:00 PM Etc/GMT+3
Run Code Online (Sandbox Code Playgroud)

预期的是

Monday, February 21, 2011 2:00:00 PM Etc/GMT-2
Monday, February 21, 2011 4:00:00 PM Etc/GMT
Monday, February 21, 2011 7:00:00 PM Etc/GMT+3
Run Code Online (Sandbox Code Playgroud)

修复它的正确方法是什么?

java gwt timezone datetime date

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

Gxt焦点管理

我正在使用Gxt.我需要将焦点设置到页面上的第一个启用字段.但我有很多页面,我想集中这种行为.Gxt中缺少文档,所以我想知道是否有人遇到过这样的问题并且可以帮助我.

现在它在每个组件的类中都是这样的

protected void resetFocus() {
    combobox.focus();
}

@Override
public void show() {
    super.show();
    resetFocus();
}
Run Code Online (Sandbox Code Playgroud)

找到了com.extjs.gxt.ui.client.aria.FocusManager但绝对不清楚我该如何使用它.或者也许根据焦点,当它们进入组件时也可以获得字段链.我可以将resetFocus方法移动到父类.

像这样的Smth

protected void resetFocus() {
    *getFocusChain().get(0).focus();*
}
Run Code Online (Sandbox Code Playgroud)

javascript java gwt focus gxt

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

如何在GWT中使用Timezone解析日期字符串

有人在GWT中成功解析了自定义时区的日期字符串吗?GWT的DateTimeFormat允许根据时区格式化日期,但我没有找到任何相反操作的方法.那么,如果我有以下字符串"02:01:2011"(格式"MM:dd:yyyy"),我该怎么办?它可以在不同的时区中产生不同的结果.

尝试更改日期,月份等时会出现另一个问题.如何根据自定义时区执行此操作?

也许有任何库可以简化所有这些操作?


我已经解决了问题,并为每个错过该部分的日期字符串添加了时区部分.仍在寻找更专业的解决方案.

javascript java gwt timezone date

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