FORM范围总是空的?网址范围很好吗?

Jos*_*ree 7 forms jetty railo tuckey-urlrewrite-filter cfml

我正在使用Java 1.7在Mac OS X 10.8上使用Jetty 8在Railo 4.0.2.002 Express中运行传统CF Fusebox 5.5应用程序.我也在使用jetty urlrewrite http://tuckey.org/urlrewrite/(如果那是相关的)

为什么FORM在提交表单时范围始终为空?但是,如果我使用URL范围,它工作正常.

该应用程序在所有其他版本的CF中运行良好,也应该在这里工作正常.

更新1:
此外,当我在onRequestStart内部Application.cfc并且我转储FORM范围时它也是空的.

有人有这个问题吗?我不认为它必然是"fusebox"所以我想知道它是否是一个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>
Run Code Online (Sandbox Code Playgroud)

更新3:
还应该注意到Charles(代理)正确检测到'POST'请求包含电子邮件/密码和其他正确发送到服务器的表单元素.
Jetty服务器根本没有看到它们或没有正确地将它们转发到Railo引擎或其他东西?

更新4:
这是他们告诉你放入你的tuckey配置web.xml.其实我放在这个在webdefault.xmletc/Railo快速的目录,我想可能只是码头的文件.

<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>
Run Code Online (Sandbox Code Playgroud)

J.T*_*.T. 0

我在使用 Tuckey 时遇到了很多问题,最终使用 Apache 和 modrewrite 来实现 Tuckey 不支持的功能。话虽如此,Railo + Tomcat/Jetty 并不是带有 Jrun 的 ColdFusion,而且配置很难确保 mod_rewrite 拥有所有请求信息,甚至拥有请求。即使 Adob​​e 也必须在 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>
Run Code Online (Sandbox Code Playgroud)

目前尚不清楚这是否是 Jetty、Railo 或 Tuckey 中的错误。