部署到 tomcat 服务器时 GWT 中的 String.indexOf(String s) 失败

发布于 2024-09-28 16:24:51 字数 407 浏览 8 评论 0原文

在 tomcat 服务器上运行 GWT2 应用程序时,我似乎遇到了 String.indexOf(String s)/String.lastIndexOf(String s) 问题。

以下代码位于 Presenter(客户端)中。通过 GWT Eclipse 插件运行时它工作得很好,但当应用程序部署到 tomcat6 服务器时返回“”。

int start = message.indexOf("<pre>")+5;
int end = message.lastIndexOf("</pre>");  
return message.substring(start, end);

如果我只执行 message.substring(5,15) 它会正确返回,但这对于我想做的事情来说不够动态。

I seem to be having having an issue with String.indexOf(String s)/String.lastIndexOf(String s) in my GWT2 app when running it on a tomcat server.

The following code is in a Presenter (client side). It works perfectly when running via the GWT Eclipse plugin, but returns "" when the app is deployed to a tomcat6 server.

int start = message.indexOf("<pre>")+5;
int end = message.lastIndexOf("</pre>");  
return message.substring(start, end);

If I do just message.substring(5,15) it returns correctly, but that isn't dynamic enough for what I want to do.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

时光是把杀猪刀 2024-10-05 16:24:51

我认为网络服务器的更改不会影响客户端代码,因为 GWT 代码被翻译成 JavaScript。我能想到的场景之一是您正在动态填充“预”,并且在设置之前,您正在尝试获取其内容。
由于托管模式运行速度较慢,因此这可以工作,但当代码转换为 JavaScript 并直接运行到浏览器中时可能会失败

如果上述情况成立,您可以尝试在计划在几毫秒后运行的计时器中运行“子字符串”代码。

顺便说一下,如果您需要在 HTML 标签中添加文本,您可以使用 DOM.getInnerHTML 或 DOM.getInnerText

I do not think change of webserver should affect client side code as it is javascript which GWT code is translated into. One of the scenario which I can think of is You are populating 'pre' dyanmically and before it is set, you are trying to get its contents.
Since hosted mode runs slower, this would work but may fail when code is translated into javascript and directly run into browser

If the above is true, you can try to run the 'substring' code in a timer scheduled to run a few millis later.

By the way, just in case you need Text insde HTML tags, you can use DOM.getInnerHTML or DOM.getInnerText

初相遇 2024-10-05 16:24:51

来自 GWT 网站:

您将花费大部分时间
运行您的开发时间
开发模式下的应用程序,其中
意味着您正在与
您的 GWT 应用程序没有
已翻译成 JavaScript。

这意味着从托管模式切换到生产模式时,某些行为可能(将会?)改变。特别是在处理正则表达式时,您可能会遇到差异。以下是一个示例:http://code.google.com /p/google-web-toolkit/issues/detail?id=3071

From the GWT site:

You will spend most of your
development time running your
application in development mode, which
means that you are interacting with
your GWT application without it having
been translated into JavaScript.

Meaning some behaviour can (will?) change when switching from hosted mode to production mode. Especially when dealing with RegEx you're likely to encounter differences. Here an example: http://code.google.com/p/google-web-toolkit/issues/detail?id=3071

意中人 2024-10-05 16:24:51

事实证明问题根本不在于 String。

由于“消息”是:

SubmitCompleteEvent event;
message = event.getResults();

消息取决于服务器的类型:Tomcat 或 Jetty(通过 Eclipse 插件)
Tomcat 在其 servlet 响应中不使用

 标记。

我很抱歉没有早点提供这些重要信息。

It turns out that the problem isn't with String at all.

Since 'message' is:

SubmitCompleteEvent event;
message = event.getResults();

Message is dependent on the type of server: Tomcat or Jetty (via Eclipse plugin)
Tomcat doesn't use <pre> tags in its servlet response.

My apologies for not giving that nugget of info earlier.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文