【发布时间】:2015-05-12 20:12:57
【问题描述】:
我正在使用 gwt 2.5.1。我的项目中有一个小要求。我们支持在我们的项目中进行本地化。如果用户输入了无效的区域设置(即..,支持的语言以外的语言),我们默认以英语显示。因此,为了从 url 中获取 locale 参数,我使用了方法com.google.gwt.user.client.Window.Location.getParameterMap()。如果用户输入 '%' 特殊字符作为语言环境参数,getParameterMap() 将抛出异常:
com.google.gwt.core.client.JavaScriptException: (URIError) @com.google.gwt.http.client.URL::decodeQueryStringImpl(Ljava/lang/String;)([string: '%']): malformed URI sequence
at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:249)
at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:136)
at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:571)
at com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:279)
at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91)
at com.google.gwt.http.client.URL.decodeQueryStringImpl(URL.java)
at com.google.gwt.http.client.URL.decodeQueryString(URL.java:117)
at com.google.gwt.user.client.Window$Location.buildListParamMap(Window.java:310)
at com.google.gwt.user.client.Window$Location.ensureListParameterMap(Window.java:327)
at com.google.gwt.user.client.Window$Location.getParameterMap(Window.java:230)
at srdm.cloud.client.sso.WebUISession.checkSession(WebUISession.java:283)
at srdm.cloud.client.WebUI.onModuleLoad(WebUI.java:79)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.google.gwt.dev.shell.ModuleSpace.onLoad(ModuleSpace.java:406)
at com.google.gwt.dev.shell.OophmSessionHandler.loadModule(OophmSessionHandler.java:200)
at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:526)
at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:364)
at java.lang.Thread.run(Thread.java:744)
那么,现在如何通过忽略特殊字符从 url 中获取 locale 参数?
【问题讨论】: