forms - FORM 范围总是空的? URL 范围可以吗?

标签 forms jetty railo tuckey-urlrewrite-filter cfml

我在 Mac OS X 10.8 和 java 1.7 上使用 Jetty 8 在 Railo 4.0.2.002 Express 中运行旧版 CF Fusebox 5.5 应用程序。
我也在使用 jetty urlrewrite http://tuckey.org/urlrewrite/ (如果这是相关的)

为什么是FORM表单提交时范围总是空白?但是如果我使用 URL范围它工作正常。

该应用程序在所有其他版本的 CF 中运行良好,在这里也应该运行良好。

更新 1:
另外,当我这样做时 onRequestStartApplication.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>

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

更新 4:
这是他们告诉您放置在您的 web.xml 中的 tuckey 配置.我实际上把它放在了 webdefault.xmletc/ 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>

最佳答案

我在使用 Tuckey 时遇到了许多问题,最终使用 Apache 和 modrewrite 来处理 Tuckey 不支持的功能。话虽如此,Rairo + 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>

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

关于forms - FORM 范围总是空的? URL 范围可以吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13953710/

相关文章:

html - 将 radio 输入置于列表标记之外

javascript - CM 表单,jQuery + $(this)。适用于页面上的所有类

azure - Spark、wasb 和 Jetty 11

mysql - 在我们更新 Mysql 版本时需要使用 @ 更改 MYSQL 查询

javascript - 如何动态检查表单中的复选框是否匹配

Javascript:当用户在浏览器中单击后退按钮时,使 div 保持显示状态 ='block'

java - Jetty MultiPartFilter 在上传大文件时抛出 SocketTimeoutException

java - 带有 Maven 示例的嵌入式 Jetty 无法重新启动 : Address already in use

coldfusion - 当对 web.xml 中的 servlet 映射进行更改时,CFC 文件未在 Railo 中正确处理

web-applications - 如何开始使用 Railo 进行 CFML 编程