2012-08-24 19 views
7

có thể tạo mẫu chung không?Java Play2 - Mẫu chung?

Pseudo code:

@(myForm: Form[T]) 

Vì vậy, tôi có thể tái sử dụng chúng như thế này:

@inputText(
       myForm("title"), 
       '_label -> "title" 

      ) 
  • Nếu có, Làm thế nào để làm điều đó?

Trả lời

9

Sử dụng sự kỳ diệu nhấn cho rằng:

@(form: Form[_]) 

này được gọi là một kiểu hiện sinh trong Scala, nghĩa đại khái "tồn tại một số loại nhưng tôi không quan tâm nó là gì".

+0

Tôi đoán trong scala mọi thứ được gọi là "ma thuật": D. Cảm ơn điều này đã giải quyết được vấn đề của tôi. –

+0

Nhưng tôi quan tâm đến loại đó! Có cách nào để thực hiện 'Form [_ extends MyAbstractForm]'? – Matthew

2

Bạn đã thử chưa?

trong gói app/views tạo vies mới: pseudo.scala.html

@(someParam: String) 
<h1>This is my pseudo template</h1> 
<div>And there is some param: <b>@someParam</b></div> 

Sau đó, trong bất kỳ quan điểm khác mà bạn có thể sử dụng nó như thế này:

... 
<div>@pseudo("param pam pam")</div> 
... 

Tất nhiên param của bạn (s) không cần chỉ là String, vì vậy bạn có thể vượt qua đó, Form[T], List[T] hoặc bất kỳ điều gì khác.

+0

Không, tôi nghĩ một cái gì đó như thế này: '@ (myForm: Form [T]) 'và sử dụng nó trong controller ->' ok (form.render (userform)) hoặc ok (form.render (commentform)) ' –

+0

Ach, bạn muốn sử dụng Form của bất kỳ kiểu nào .. Hãy thử giải pháp Marius sau đó trong Scala gạch dưới là một số loại ký tự đại diện, giống như dấu hoa thị trong các ngôn ngữ khác. – biesior

+0

Đó là ký tự đại diện hoặc có nội dung "Tôi không quan tâm". –

4

Tôi không thích cách tiếp cận @(form: Form[_]) vì nó ném loại an toàn ra ngoài cửa sổ.

Khi chuyển qua số ok(form.render(userform)), bạn sẽ không nhận được trợ giúp từ trình biên dịch khi bạn @form("lastNme") trong mẫu của mình, nhưng bạn sẽ gặp phải lỗi thời gian chạy nếu không bị phát hiện trong khi thử nghiệm.

Điều tôi đang làm là cung cấp giao diện (hoặc đặc điểm trong trò chơi 2 scala) cho các biểu mẫu chung (ví dụ: đăng ký thành viên và đăng ký hội nghị, hoặc số liệu thống kê giải đấu và thống kê nhóm, v.v.); theo cách đó, tại thời gian biên dịch, lỗi đánh máy và những thứ tương tự bị bắt.

Vâng, nhiều soạn sẵn để đối phó với, nhưng đến từ phía ngôn ngữ năng động của hàng rào, càng ít tôi phải đối phó với các lỗi thời gian chạy thì càng tốt ...

+0

+2 Thỏa thuận đầy đủ – biesior

Các vấn đề liên quan