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

时间:2010-10-20 06:04:56

标签: java gwt gwt-mvp

在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)它会正确返回,但这对我想做的事情来说还不够动态。

3 个答案:

答案 0 :(得分:1)

我认为网络服务器的更改不会影响客户端代码,因为它是javascript哪个GWT代码被翻译成。我能想到的一个场景是你正在进行“预测”,并且在设置之前,你正试图获得它的内容。 由于托管模式运行较慢,这可以工作,但是当代码转换为javascript并直接运行到浏览器

时可能会失败

如果上述情况属实,您可以尝试在计划运行几毫秒的计时器中运行'substring'代码。

顺便说一下,如果你需要Text insde HTML标签,你可以使用DOM.getInnerHTMLDOM.getInnerText

答案 1 :(得分:1)

来自GWT网站:

  

你将花费大部分时间   开发时间运行你的   应用程序在开发模式中   意味着你正在与之互动   没有它的GWT应用程序   已被翻译成JavaScript。

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

答案 2 :(得分:1)

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

因为'message'是:

SubmitCompleteEvent event;
message = event.getResults();

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

我很抱歉早些时候没有提供这些信息。