На FW/1 где хорошее место для перехвата действий с точкой с запятой

Я хочу убедиться, что запросы, которые выглядят так:

index.cfm?action=main.data;a=1;b=2 не дает сбоев. Прямо сейчас он пытается

введите здесь описание изображения

Это продолжение Возможен ли доступ к параметрам матрицы (пара имя-значение, разделенная точкой с запятой) в ColdFusion?

Где на FW/1 можно перехватывать действия с точкой с запятой?


person James A Mohler    schedule 11.10.2013    source источник


Ответы (1)


Параметры матрицы применяются к uri запроса, а не к строке запроса. Они не являются матричными параметрами, если они встречаются после вопросительного знака, поэтому прямой вопрос, который вы задаете, на самом деле не имеет смысла (поскольку у вас есть недопустимая/поврежденная переменная действия, и, таким образом, все, что вы пытаетесь сделать, вполне может быть неправильным способом сделать это - но без более подробной информации трудно предложить лучший способ).

Ответ на более общий "как мне изменить значение действия до того, как FW/1 подберет его?": до вызова setupRequestDefaults, что означает до вызова onRequestStart , что означает переопределение версии FW/1 своей собственной, что-то вроде...

function onRequestStart ( string targetPath )
{
    var ActionVar = variables.framework.action;

    if ( StructKeyExists(Url,ActionVar) ) Url[ActionVar] = fiddleWithAction(Url[ActionVar]);
    if ( StructKeyExists(Form,ActionVar) ) Form[ActionVar] = fiddleWithAction(Form[ActionVar]);

    super.onRequestStart( argumentcollection=arguments );
}

Где fiddleWithAction — это функция, которая делает все, что нужно (в данном случае это сделает ListFirst(string,';')).

Но опять же, это, скорее всего, не лучший способ добиться того, что вы пытаетесь сделать.

person Peter Boughton    schedule 11.10.2013