GWT user.agent是否适用于托管模式?

GWT user.agent是否适用于托管模式?,gwt,maven,gxt,Gwt,Maven,Gxt,据我所知,GoogleWebToolkit.gwt.xml文件中的“user.agent”属性指定了Java到Java脚本转换的目标。因为托管模式仍然运行Java而不是Javascript,我不明白为什么google chrome抱怨“user.agent”值设置不正确。更奇怪的是,即使我用向它添加“safari”,它也会不断抱怨 我能在这里做什么 我使用GWT版本2.3.0和GXT版本2.2.5。DevMode不编译为JavaScript,但仍然必须遵守延迟绑定规则,其中许多规则基于user.

据我所知,GoogleWebToolkit.gwt.xml文件中的“user.agent”属性指定了Java到Java脚本转换的目标。因为托管模式仍然运行Java而不是Javascript,我不明白为什么google chrome抱怨“user.agent”值设置不正确。更奇怪的是,即使我用
向它添加“safari”,它也会不断抱怨

我能在这里做什么


我使用GWT版本2.3.0和GXT版本2.2.5。

DevMode不编译为JavaScript,但仍然必须遵守延迟绑定规则,其中许多规则基于
user.agent
属性,因此必须正确设置

user.agent
属性值由所谓的选择脚本(
*.nocache.js
文件)中生成的某些脚本片段确定,该脚本的内容可能取决于GWT模块中的
set属性

例如,如果使用
编译GWT模块,则
user.agent
属性将硬编码到
*.nocache.js
中的
gecko1_8

如果以后运行DevMode,除非它认为必须覆盖现有的
*.nocache.js
,否则它将使用它;因此,当为
gecko1_8
生成
*.nocache.js
时,使用Chrome运行应用程序只会导致类似以下错误:

com.google.gwt.core.client.JavaScriptException: (TypeError): Property 'user.agent' of object  is not a function
如果您为多个浏览器编译,但随后仅为
gecko1_8
运行带有模块的DevMode,则DevMode将使用
*.nocache.js
中找到的属性提供程序来确定实际使用的用户代理(对于Chrome,woul dbe
safari
),并将其与从模块中确定的属性提供程序进行比较(此处硬编码为
gecko1_8
),然后会警告您它们不匹配(因此,您的应用程序可能会出现故障:例如,代码将使用
DominpMozilla
,而
DominpSafari
应该在Chrome中使用)


因此,要解决此问题,请删除
*.nocache.js
文件,以便DevMode必须生成一个新的文件,或者使用
user.agent
值与您将在DevMode中使用的浏览器匹配的模块重新编译您的应用程序