我正在开发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)
我把igorbel的答案标记为唯一正确的cos我没有找到任何适当的方法在所有情况下指定相同的行为.
我正在研究将数据库实体转换为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) 我决定将日志系统添加到我的gwt服务层.首先,我想记录从该层抛出的所有异常.我有一个类似于Spring的ServletDispatcher的对象,它调用其他服务.我以为我可以在那里添加日志记录,但我意识到GWT服务将ServletResponse中的已检查异常包装起来并取消选中UnexpectedException.
任何人都可以分享他对这个问题的经验吗?记录所有GWT服务的已检查和未检查异常的最佳方法是什么.
我找到了建议扩展RemoteServiceServlet并覆盖默认异常流的解决方案.但我发现这个解决方案太费时间了.anybode知道任何更简单的变体吗?
嗨,我正在使用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)
这不是我喜欢的,我需要它没有尖锐的性格.
考虑以下代码在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)
修复它的正确方法是什么?
我正在使用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) 有人在GWT中成功解析了自定义时区的日期字符串吗?GWT的DateTimeFormat允许根据时区格式化日期,但我没有找到任何相反操作的方法.那么,如果我有以下字符串"02:01:2011"(格式"MM:dd:yyyy"),我该怎么办?它可以在不同的时区中产生不同的结果.
尝试更改日期,月份等时会出现另一个问题.如何根据自定义时区执行此操作?
也许有任何库可以简化所有这些操作?
我已经解决了问题,并为每个错过该部分的日期字符串添加了时区部分.仍在寻找更专业的解决方案.
java ×7
gwt ×6
javascript ×4
date ×2
timezone ×2
datetime ×1
dto ×1
exception ×1
focus ×1
gwt-history ×1
gxt ×1
html ×1
logging ×1
persistence ×1
spring ×1