Передача переменной/rc при отправке формы без использования скрытых входных данных в Coldfusion/Coldbox

я пробовал это миллионом способов, поэтому я решил, что просто сломаюсь и спрошу

как правило, моя настройка представляет собой обработчик с различными событиями для просмотра редактирования и сохранения для отправки формы.

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">

что по существу создает ссылку на событие сохранения

Теперь, если я не установлю скрытый ввод в моей форме, как это

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

Я всегда получаю сообщение об ошибке "Элемент UNIQUE не определен в RC"

Я знаю, что должен быть способ передать параметр при отправке формы, не определяя его как ввод, я просто не могу найти ни одного примера того, как это сделать.


person Jay Rizzi    schedule 25.07.2013    source источник
comment
Если вы не добавите его в строку запроса URL-адреса или не определите его как поле формы, невозможно передать параметр при отправке формы. Вы можете сохранить его в области сеанса, но тогда вам нужен процесс для его очистки, когда он больше не нужен. Передача подобных значений в качестве скрытых полей формы является довольно стандартной практикой.   -  person Scott Stroz    schedule 26.07.2013
comment
Действительно? Казалось бы, это не будет стандартным, так как любой, у кого есть firebug/chrometools, может изменить входное значение по своему желанию, но я полагаю, что для этого нужна проверка на стороне сервера... по крайней мере, я больше не чувствую себя так плохо из-за того, что всегда делаю скрытые входы   -  person Jay Rizzi    schedule 26.07.2013
comment
Если и есть, то это техника, которая мне не известна. :D   -  person Scott Stroz    schedule 26.07.2013
comment
Взлом — это то, о чем вы всегда должны знать. Передача переменных через скрытые поля или как переменные строки запроса — это то, как каждый язык веб-приложений передает переменные со стороны клиента на сторону сервера. Существуют и другие методы управления временными переменными, но, как уже упоминал Бен, они включают переменные сеанса, файлы cookie или клиентские переменные. Похоже, вы используете ColdBox, так что вы можете заглянуть во флэш-память ColdBox. (думаю, так это называется)   -  person Stephen Moretti    schedule 26.07.2013
comment
Хорошо, я ценю понимание, кто-то ответит, и я приму его   -  person Jay Rizzi    schedule 26.07.2013


Ответы (1)


Вы можете использовать event.getValue() для получения значения вместо прямой проверки RC. Это позволяет вам вернуть значение по умолчанию, если оно не существует в RC:

<input id="unique" name="unique" type="hidden" value="#event.getValue("unique","defaultValue")#"/> 
person Scott Coldwell    schedule 26.07.2013
comment
И вы всегда можете сделать StructKeyExists(rc, unique) для любого ветвления, если вы хотите изменить поведение в зависимости от того, есть ли оно. - person jinglesthula; 16.04.2014