Управление потоком страниц в Play!рамки тегов - PullRequest
1 голос
/ 21 сентября 2011

В веб-приложении, созданном с использованием Play Framework, у меня есть страница оформления заказа, на которой перечислены корзина покупок пользователя, а также форма адреса. Я создал адресную форму в виде тега (addressform.html), чтобы его можно было повторно использовать.

checkout.html:

#{if shopcart.cartItems}
    #{shopcartview customer:customer,shopcart:shopcart/}
    #{addressform customer:customer /}
#{/if}

Форма адреса имеет элемент формы #{form @setAddressInfo()}

, который вызывает метод контроллера, как показано ниже

public static void setAddressInfo(Long customerId,...) {
   ...
   showPaymentPage();
}

, который, если все прошло хорошо, переходит на страницу платежей.

Проблема возникает, когда я хочу повторно использовать addressform на моей странице confirmOrder.

confirmOrder.html:

#{if shopcart.cartItems}
        #{shopcartview customer:customer,shopcart:shopcart/}
        #{addressform customer:customer /}
#{/if}

<a href="link_to_payment_page">editPaymentInfo</a>

здесь, если пользователь меняет адрес и отправляет форму, метод setAddressInfo() при успешном завершении откроет страницу платежей. Это нехорошо - пользователь может не захотеть изменить информацию об оплате вообще. Также я предоставляю ссылку на страницу платежей для тех пользователей, которые хотят изменить информацию об оплате. Я хочу, чтобы отображалась та же страница OrderConfirm, чтобы пользователь мог нажать кнопку Submit Order.

Так как мне это сделать? Я могу, конечно, повторно использовать форму адреса в этом случае правильно? Можете ли вы помочь мне понять, как управлять потоком страниц в этом случае?

1 Ответ

1 голос
/ 21 сентября 2011

Вы можете предоставить параметр, указывающий, куда перенаправить пользователя, в setAddressInfo () через скрытый ввод или через параметр java, такой как.Оба варианта:

<input type="hidden" name="urlToRedirectUserTo" value="urlToRedirecTo(maybe using @{}..)"/>

Или:

#{form @setAddressInfo("urlToRedirectUserTo")}

И в действии, которое вы делаете:

public static void setAddressInfo(String urlToRedirectUserTo) { 
   ...
   ...
   ...
   redirect(urlToRedirectUserTo);
}

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

...