2012-02-27 3 views
5

Sayfamda bu bağlantıyı (page1) var. Beni https'tan http'a geri götüren bir sayfa2 bağlantısı nasıl yapılır? Ben @@ notasyonu hile yapacağını düşündü:Sizi https'den http'a geri götüren bir bağlantı nasıl yapılır? https üzerinden bir sayfa (page2) beni alır</p> <pre><code><a href="@{Controller.action1().secure()}">Link1</a> </code></pre> <p>:

<a href="@@{Controller.action2()}">Link2</a> 

ama, action2 da https üzerinden çağrılan etmez.

+0

Ne oluşturulan HTML benziyor: Şimdi kullanabileceğiniz Bu yöntemle

? Bağlantılarınız protokol içermiyorsa, belki de http: // 'önekini el ile ekleyebilirsiniz. –

+0

@XavierHolt teşekkürler, bunu denedim ve işe yarıyor. Yanlış bir izlenim vardı, her zaman tam anlamıyla http: // 'yolunu verdi. @@ {...} 'yerine' @ {...} '(göreli yol veren) kullanırsam, http: //' el ile ayarlayabilirim. Zarif değil ama işe yarıyor. Alexander Ponomarenko'nun yanıtı ise sağlam bir çözüm gibi görünüyor. – stojke

cevap

3

Play) (güvenli ters olacak bir yöntem yoktur, ancak özel JavaExtension ile kendiniz uygulayabilir:

import play.templates.JavaExtensions; 
import play.mvc.Router.ActionDefinition; 

public class MyExtensions extends play.templates.JavaExtensions { 

    public static String unsecure(ActionDefinition action) { 
      if (!action.url.contains("http://") && !action.url.contains("https://")) { 
       action.absolute(); 
      } 
      action.url = action.url.replace("https:", "http:"); 
      return action.url; 
     } 

Özel uzatma yöntemleri String dönmelidir ve parametre yapacak geliştirilmiş nesne, as the documentation suggests. Kod neredeyse secure method's code ile aynıdır.

href="@{Controller.action2().unsecure()}" 
+0

Harika! ÇALIŞIYOR bir cazibe gibi! Şimdi düzeltmek için kalan tek şey, güvenli() ve güvensiz() yöntemlerin yalnızca protokolü değil, aynı zamanda application.conf'a göre bağlantı noktasını değiştirmesini sağlamaktır. Bu böcek için bir bilet var ([bilet] (https://play.lighthouseapp.com/projects/57987/tickets/362-using-secure-does-not-change-port-when-reverse-routing)) ama neden henüz ele alınmadığını bilmiyorum. – stojke

İlgili konular