Как перенаправить ВНУТРИ сервера в noir?

Noir предоставляет (ответ/перенаправление «url») для перенаправления 302 на стороне клиента. Но как перенаправить внутри самого веб-сервера? Например, запись страницы входа, если регистрация не удалась, как перенаправить на страницу ошибки с сообщением?

(defpage [:post "/error"] {:keys [msg]}
  (layout [:h3 "ERROR:"] [:p msg]))

(defpage [:post "/do-login"] {:keys [user pass]}
  (if (match user pass)
    (login-ok)
    (redirect-to-error-page but how to carry msg)))

person qiuxiafei    schedule 31.10.2012    source источник


Ответы (1)


Вы можете отправить новую страницу с помощью рендеринга, см. http://webnoir.org/tutorials/forms например, как у вас:

(render "/errorpage" msgid)

Сообщение придет как идентификатор, т.е. грамм. "/errorpage/1001", который вы можете подобрать с помощью обозначения :id, см. ответ @dAni в Функция рендеринга Noir вызывает исключение NullPointerException для того, как это использовать. Вы даже можете назвать свои страницы!

person 0dB    schedule 31.10.2012
comment
Я пробовал рендерить, но он просто показывает другую страницу с URL-адресом старой страницы. Возможна ли переадресация на сервере? - person qiuxiafei; 31.10.2012
comment
Понимаю. Нет, я этого не знаю. - person 0dB; 31.10.2012
comment
@qiuxiafei: если вы хотите, чтобы URL-адрес также обновлялся в браузере, вам необходимо выполнить перенаправление на стороне клиента. Перенаправление на стороне сервера не может сообщить браузеру о новом URL-адресе, поскольку это просто ответ на запрос страницы входа. - person Ankur; 31.10.2012
comment
@Ankur как насчет en.wikipedia.org/wiki/URL_redirection#HTTP_status_codes_3xx? - person Cubic; 31.10.2012
comment
@Cubic: это и есть client side redirection, то есть ответ возвращается в браузер, а затем браузер автоматически перенаправляется на URL-адрес, указанный в ответе. Перенаправление на стороне сервера означает, что в том же цикле ответа на один запрос вы возвращаете содержимое другого обработчика. Пример: Server.redirect в ASP.NET - person Ankur; 31.10.2012
comment
@Ankur, не хочешь превратить свой комментарий в ответ? - person 0dB; 03.11.2012