Проблема Spring ROO с UrlRewrite в STS (затмение) - PullRequest
7 голосов
/ 15 июня 2010

У меня проблемы с выяснением, как решить эту проблему. У меня есть файл с именем: "urlrewrite.xml", который автоматически генерируется Spring ROO после запуска команды "controller" в ROO Shell.

Тем не менее, я все еще получаю следующую ошибку:

"Referenced file contains errors (http://tuckey.org/res/dtds/urlrewrite3.0.dtd). For more information, right click on the message in the Problems View and select "Show Details..."

Вот содержимое файла urlrewrite.xml:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.0//EN" "http://tuckey.org/res/dtds/urlrewrite3.0.dtd">

<urlrewrite default-match-type="wildcard">
    <rule>
        <from>/resources/**</from>
        <to last="true">/resources/$1</to>
    </rule>
    <rule>
        <from>/static/WEB-INF/**</from>
        <set type="status">403</set>
        <to last="true">/static/WEB-INF/$1</to>
    </rule>
    <rule>
        <from>/static/**</from>
        <to last="true">/$1</to>
    </rule>
    <rule>
        <from>/</from>
        <to last="true">/app/index</to>     
    </rule>
    <rule>
        <from>/app/**</from>
        <to last="true">/app/$1</to>
    </rule>
    <rule>
        <from>/**</from>
        <to>/app/$1</to>
    </rule>
    <outbound-rule>
        <from>/app/**</from>
        <to>/$1</to>
    </outbound-rule>    
</urlrewrite>

Есть мысли о том, как избавиться от этой ошибки?

Ответы [ 14 ]

10 голосов
/ 24 июня 2010

Просто измените 3,0 на 3,2

<!DOCTYPE urlrewrite
    PUBLIC "-//tuckey.org//DTD UrlRewrite 3.2//EN"
    "http://tuckey.org/res/dtds/urlrewrite3.2.dtd">
7 голосов
/ 31 мая 2011

я тоже получил эту проблему. я просто изменил код от:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.2//EN"
        "http://tuckey.org/res/dtds/urlrewrite3.2.dtd">

в:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//www.tuckey.org//DTD UrlRewrite 3.2//EN"
        "http://www.tuckey.org/res/dtds/urlrewrite3.2.dtd">

По сути, я просто добавил "www". до "tuckey.org", и это решило проблему.

5 голосов
/ 08 июля 2010

http://forum.springsource.org/showthread.php?t=90962 привело меня на правильный путь.

Если вы загрузите DTD из http://tuckey.org/res/dtds/urlrewrite3.0.dtd, вы обнаружите, что иногда это правильно, а иногда - пустой HTML. Eclipse кэширует то, что загружает в любом случае. Вы можете решить проблему двумя способами:

  1. Загрузите файл DTD самостоятельно, убедитесь, что он выглядит как XML DTD, сохраните его локально и укажите его в заголовке urlrewrite.xml.
  2. Перейдите в «Настройки» -> «Основные» -> «Сетевые подключения» -> «Кэширование» и удалите кэшированный DTD, а затем повторно проверьте XML (щелкните правой кнопкой мыши -> Проверить). Повторяйте, пока не получите хорошую копию DTD в кеше.
3 голосов
/ 27 июня 2011

Добавить www к ссылке работает у меня, я изменил с

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE urlrewrite
    PUBLIC "-//tuckey.org//DTD UrlRewrite 3.0//EN"
    "http://tuckey.org/res/dtds/urlrewrite3.0.dtd">

до

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE urlrewrite
    PUBLIC "-//tuckey.org//DTD UrlRewrite 3.0//EN"
    "http://www.tuckey.org/res/dtds/urlrewrite3.0.dtd">
2 голосов
/ 21 июля 2010

Привет, я только что решил это, основываясь на нескольких из этих ответов здесь:

Шаги, которые я выполнил, были:
1. Загрузил urlrewrite3.2.dtd
2. локально сохранили его в... war / WEB-INF / urlrewrite3.2.dtd
3. указал мой файл URLrewrite на локальную копию
4. удалил кэшированную версию («Настройки»> «Основные»> «Сетевые подключения»> «Кэш»)
5Повторно утвердил XML

Примечание. Сначала я попытался отредактировать файл, как было предложено Тити Вангса бен Дамхором, но там я получил ошибку проверки в файле dtd.Я снял то, что следовало за шагами выше и бум.Задача решена.Спасибо тем, кто внес идеи.

Цитата

1 голос
/ 12 августа 2010
1 голос
/ 27 июля 2010

Изменение 3,0 на 3,2 работало для меня ...

1 голос
/ 17 июня 2010

В IntelliJ IDEA вы можете выбрать красный DTRI URI, нажать Alt-Enter, затем выбрать «Выбрать внешний ресурс».

В Eclipse вы можете добавить запись в каталог XML в разделе: Предпочтения -> XML -> Каталог XML.

Надеюсь, это поможет.

1 голос
/ 16 июня 2010

сделал поиск в Google "sample dtd" 4-й или 5-й результат был http://www.xmlfiles.com/dtd/dtd_examples.asp

образец имел

<!DOCTYPE TVSCHEDULE [ 
<!ELEMENT TVSCHEDULE (CHANNEL+)>
..
..
]>

переопределение URL dtd началось с

<!ELEMENT urlrewrite ((rule|class-rule)*, outbound-rule*, catch*)>

я выпустил wget для "" http://tuckey.org/res/dtds/urlrewrite3.0.dtd"" и открыл в sts, да, его красный.

добавлен сверху

<!DOCTYPE urlrewrite [

и объявлен снизу

]>

и больше не красный.

, поэтому я предлагаю

  1. получить dtd
  2. изменить его
  3. сохраните его в том же каталоге, что и XML
  4. , измените XML, чтобы использовать dtd в том же каталоге.
0 голосов
/ 20 июня 2011

Я понял проблему. Попробуйте этот URL http://tuckey.org/res/dtds/urlrewrite3.1.dtd при просмотре, и вы увидите, что он перенаправляет вас на совершенно другую HTML-страницу вместо файла dtd. Итак, вот что я сделал. Я нашел файл dtd из Tuckey Jar и скопировал содержимое в {workspace} /. Metadata / .plugins / org.eclipse.wst.internet.cache / 279269156.cache, удалил предупреждения из представления маркеров и провел повторную проверку. Rememer 279269156.cache имя файла кэша будет отличаться. Таким образом, вы должны выяснить, какой файл является плохим, открыв файл кеша с помощью какого-либо редактора

...