String.indexOf (String s) в GWT завершается неудачно при развертывании на сервере Tomcat - PullRequest
0 голосов
/ 20 октября 2010

У меня, похоже, возникла проблема с String.indexOf (String s) /String.lastIndexOf (String s) в моем приложении GWT2 при запуске его на сервере Tomcat.

Следующий код находится вВедущий (на стороне клиента).Он отлично работает при запуске через плагин GWT Eclipse, но возвращает "", когда приложение развернуто на сервере tomcat6.

<code>int start = message.indexOf("<pre>")+5;
int end = message.lastIndexOf("
"); возвращает message.substring (начало, конец);

Если я просто сделаю message.substring (5,15), он вернется правильно, но этого недостаточно для того, что я хочу сделать.

Ответы [ 3 ]

1 голос
/ 20 октября 2010

с сайта GWT:

Вы потратите большую часть своего время разработки работает ваш приложение в режиме разработки, которое означает, что вы взаимодействуете с ваше приложение GWT без него был переведен на JavaScript.

Означает, что некоторое поведение может (будет?) Меняться при переключении из хост-режима в рабочий режим. Особенно при работе с RegEx вы, вероятно, столкнетесь с различиями. Вот пример: http://code.google.com/p/google-web-toolkit/issues/detail?id=3071

1 голос
/ 21 октября 2010

Оказывается, что проблема вовсе не в String.

Так как 'message' это:

SubmitCompleteEvent event;
message = event.getResults();

Сообщение зависит от типа сервера: Tomcat или Jetty(через плагин Eclipse) Tomcat не использует <pre> теги в своем ответе сервлета.

Приношу свои извинения за то, что не предоставил этот слепок информации раньше.

1 голос
/ 20 октября 2010

Я не думаю, что изменение веб-сервера должно повлиять на код на стороне клиента, так как это код JavaScript, в который транслируется GWT-код.Один из сценариев, о котором я могу подумать, это то, что вы заполняете 'pre' дианмически, и до того, как он установлен, вы пытаетесь получить его содержимое.Поскольку размещенный режим работает медленнее, это может сработать, но может произойти сбой, когда код транслируется в javascript и напрямую запускается в браузере

Если вышеприведенное верно, вы можете попробовать запустить код 'substring' в таймере, назначенномзапустите несколько миллисекунд позже.

Кстати, на всякий случай, если вам нужны HTML-теги Text insde, вы можете использовать DOM.getInnerHTML или DOM.getInnerText

...