Forms 在表单提交时传递变量/rc,而不使用Coldfusion/Coldbox中的隐藏输入

Forms 在表单提交时传递变量/rc,而不使用Coldfusion/Coldbox中的隐藏输入,forms,coldfusion,coldbox,Forms,Coldfusion,Coldbox,我已经试过无数次了,所以我想我应该停下来问问 通常,我的设置是一个处理程序,用于编辑视图和保存以提交表单 function edit(event, rc, prc) { rc.query=getmodel("somemodel").getlist(rc.unique); } function save(event, rc, prc){ event.norender(); getPlugin("MessageBox").info

我已经试过无数次了,所以我想我应该停下来问问

通常,我的设置是一个处理程序,用于编辑视图和保存以提交表单

function edit(event, rc, prc) {

        rc.query=getmodel("somemodel").getlist(rc.unique);
        }   

    function save(event, rc, prc){
     event.norender();
     getPlugin("MessageBox").info("#rc.allocation# Saved");
     setNextEvent(event="myhandler.edit", url="edit?unique=#rc.allocation#");
    }
在编辑视图中,url类似于myhandler/edit?unique=99,我有一个表单,可以这样设置保存事件

<form  action="#event.buildLink('myhandler.save">

这实际上创建了到save事件的链接

现在,除非我在表单中像这样设置一个隐藏输入

<input id="unique" name="unique" type="hidden" value="#rc.unique#"/> 

我总是收到一个错误“元素唯一性在RC中未定义”


我知道必须有一种方法能够在表单提交时传递参数,而不将其定义为输入,我只是找不到一个示例来说明如何执行此操作,因此可以使用
事件.getValue()
来检索值,而不是直接检查RC。这允许您在RC中不存在的情况下返回默认值:

<input id="unique" name="unique" type="hidden" value="#event.getValue("unique","defaultValue")#"/> 


除非将其添加到URL的查询字符串中,或将其定义为表单字段,否则无法在表单提交时传递参数。您可以将其存储在会话作用域中,但在不再需要它时,您需要一个清除它的过程。将这样的值作为隐藏表单字段传递是非常标准的做法。真的吗?这似乎不是标准的,因为任何使用firebug/chrometools的人都可以随意更改输入值,但我想这就是服务器端验证的目的……至少我不再为总是隐藏输入感到难过。如果有,这是一种我不知道的技术扎克是你必须时刻注意的事情。通过隐藏字段或作为查询字符串变量传递变量是每个web应用程序语言将变量从客户端传递到服务器端的方式。除此之外,还有一些管理瞬态变量的技术,但正如Ben已经提到的,它涉及会话变量、cookie或客户端变量。看起来您正在使用ColdBox,所以您可能需要查看ColdBox的闪存。(我想这就是它的名字)好的,我很感激你的洞察力,有人给出了答案,我会接受它,你可以随时使用StructKeyExists(rc,“unique”)来进行任何分支,以防你想根据是否存在来改变行为。