Область FORM всегда пуста? Область URL в порядке?

Я запускаю устаревшее приложение CF Fusebox 5.5 в Railo 4.0.2.002 Express с Jetty 8 в Mac OS X 10.8 с java 1.7. Я также использую jetty urlrewrite http://tuckey.org/urlrewrite/ (если это уместно)

Почему область FORM всегда пуста при отправке формы? Но если я использую область URL, все работает нормально.

Приложение отлично работало во всех других версиях CF и должно также работать здесь.

ОБНОВЛЕНИЕ 1:
Кроме того, когда я делаю onRequestStart в Application.cfc и сбрасываю область FORM, там тоже пусто.

У кого-нибудь есть проблемы с этим? Я не думаю, что это обязательно «блок предохранителей», поэтому мне интересно, является ли это проблемой совместимости с Railo 4?

ОБНОВЛЕНИЕ 2:
Когда форма отправляется в /admin/index.cfm?event=Main.Login
, область формы работает нормально. Но когда он публикуется в /admin/event/Main.Login, область формы исчезает.

<?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>
    <rule>
        <from>^/admin/event/(.*)</from>
          <to last="false">/admin/index.cfm?event=$1</to>
    </rule>
  <rule>
      <from>^/lms/event/(.*)</from>
      <to last="false">/lms/index.cfm?event=$1</to>
  </rule>
</urlrewrite>

ОБНОВЛЕНИЕ 3:
Следует также отметить, что Чарльз (прокси) правильно определяет, что запрос «POST» содержит адрес электронной почты/пароль и другие элементы формы, правильно отправленные на сервер.
Сервер Jetty просто не видит их или неправильно перенаправляет на движок Railo или что-то в этом роде?

ОБНОВЛЕНИЕ 4:
Вот конфигурация tuckey, которую вам советуют разместить в файле web.xml. На самом деле я поместил это в каталог webdefault.xml в etc/ Railo Express, который, я думаю, мог быть просто файлами Jetty.

<filter>
    <filter-name>UrlRewriteFilter</filter-name>
    <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>UrlRewriteFilter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
</filter-mapping>

person Joshua F. Rountree    schedule 19.12.2012    source источник
comment
Можете ли вы показать нам код, который не работает? Что вы пробовали?   -  person Dan Short    schedule 19.12.2012
comment
Я думаю, что только что ответил на него... Я считаю, что это мои правила перезаписи URL...   -  person Joshua F. Rountree    schedule 19.12.2012
comment
Они действительно могут быть хитрыми. Если вы считаете, что это ваши правила перезаписи URL-адресов, опубликуйте до и после в качестве своего ответа, чтобы другие могли извлечь выгоду из решения.   -  person Dan Short    schedule 19.12.2012
comment
Я никогда не использовал Tuckey, но если он выполняет перенаправление 301 или 302, то он действительно потеряет область действия FORM. Если вы просматриваете HTTP-трафик для запроса (используя Fiddler (fiddler2.com/fiddler2) или Charles (charlesproxy.com)) вы видите перенаправление?   -  person Dan Short    schedule 19.12.2012
comment
Tuckey - это фильтр сервлетов (подключается к Tomcat), который переписывает URL-адреса (не перенаправляет HTTP) - он не будет выполнять 301/302, если вы не дадите ему указание, используя атрибут type="redirect".   -  person Peter Boughton    schedule 19.12.2012
comment
Кстати, у Jetty 8 есть собственный встроенный механизм перезаписи — вам может не понадобиться использовать Tuckey (хотя я думаю, что Tuckey более гибкий). Кроме того, убедитесь, что у вас не включены оба движка с конфликтующими правилами (проверьте start.ini в корне причала).   -  person Peter Boughton    schedule 19.12.2012
comment
Он определенно не выполняет перенаправление, просто использовал Чарльза, как предложил @DanShort. Когда я нажимаю «Обновить» в браузере, он также выполняет приглашение «Повторно отправить», поэтому я знаю, что он определенно выполняет правильный вызов POST. Область действия просто пуста... но если я вызову непосредственно index.cfm?event=main.login и нажму кнопку "Отправить", форма будет работать нормально. Так странно!   -  person Joshua F. Rountree    schedule 19.12.2012
comment
Кроме того, переписывание URL-адресов не будет иметь ничего общего с данными POST, не так ли? По крайней мере, я знаю, что никогда не писал никаких условий, связанных с POST...   -  person Joshua F. Rountree    schedule 19.12.2012
comment
Кроме того, Чарльз показывает, что запрос содержит все поля формы post... пристань / railo просто не обрабатывает их по какой-то причине, когда URL-адрес структурирован таким образом.   -  person Joshua F. Rountree    schedule 19.12.2012
comment
Перезапись URL-адреса просто перезаписывает URL-адрес - если это специально не указано, он не должен изменять остальную часть HTTP-запроса.   -  person Peter Boughton    schedule 19.12.2012
comment
Вы можете увидеть, отличается ли переписывание /admin/index.cfm?bob=$1 в /admin/index.cfm?event=$1 от ваших текущих переписываний - по крайней мере, это поможет сузить проблему.   -  person Peter Boughton    schedule 19.12.2012
comment
Еще одна вещь — у Railo есть опция «Объединить URL и форму» в администраторе — она должна объединять значения из каждой области (например, StructAppend(Url,Form) — здесь это не должно быть проблемой, но это дополнительная вещь, чтобы проверить и посмотреть, влияет ли это на что-то.   -  person Peter Boughton    schedule 19.12.2012
comment
Я... нет костей... это раздражающий вопрос, который нужно выяснить. Собираюсь разобрать его до основания и посмотреть, нет ли возможных проблем с кодом с моей стороны.   -  person Joshua F. Rountree    schedule 19.12.2012


Ответы (1)


У меня было несколько проблем с Tuckey, и в итоге я использовал Apache и modrewrite для функций, которые Tuckey просто не поддерживал. При этом Railo + Tomcat/Jetty — это не ColdFusion с Jrun, и конфигурация была сложной, чтобы убедиться, что у mod_rewrite есть вся информация о запросе и даже запрос вообще. Даже Adobe пришлось исправлять CF10 после выпуска, потому что им не хватало оригинальной функциональности коннекторов CF9-+JRUN.

Однако для вашего решения вам нужно протянуть руку вверх и наружу. Смотрите ветку здесь.

https://groups.google.com/forum/#!msg/railo/uw-U9hCFu5k/bEmr_I2Kl8sJ

У других людей такая же проблема, и они обошли ее, поместив это в onRequestStart:

<cfscript>
    if(gethTTPRequestData().method eq "POST") {
            if(NOT structKeyExists(form,"fieldnames")) {
                    var paramMap = getPageContext().getRequest().getParameterMap();
                    var paramMapKeys = structKeyList(paramMap);
                    form.fieldnames = paramMapKeys;
                    for(x =1; x lte listLen(paramMapKeys); x++) {
                            param = listGetAt(paramMapKeys,x);
                            form[param] = paramMap[param][1];
                    }
            }
    }
</cfscript>

Неясно, является ли это ошибкой Jetty, Railo или Tuckey.

person J.T.    schedule 19.12.2012
comment
У меня никогда не было проблем с Apache RewriteRule с Tomcat и Railo, поэтому я склонен полагать, что это проблема Tuckey и/или Jetty, а не Railo. - person Sean Corfield; 13.01.2013
comment
Шон, я точно имел в виду конфигурацию разъема. Это не имеет ничего общего с Railo, просто у Macromedia разъем JRun был довольно надежным из коробки, как вы знаете. С коннектором Apache/Tomcat определенно больше возможностей (в истинном стиле группы Apache). - person J.T.; 14.01.2013