2012-04-12 29 views
21

Tôi đang cố gắng sử dụng views.html.helper.select (tài liệu here). Tôi không biết scala, vì vậy tôi đang sử dụng java. Tôi cần phải vượt qua đối tượng của loại Seq [(String) (String)] cho mẫu phải không? Một cái gì đó như:Sử dụng trình trợ giúp tùy chọn trong các mẫu của Play Framework 2.0

@(fooForm:Form[Foo])(optionValues:Seq[(String)(String)]) 

@import helper._ 

@form(routes.foo){ 
    @select(field=myForm("selectField"),options=optionValues) 
} 

Tôi không biết cách tạo Seq [(String) (String)] trong java. Tôi cần phải điền vào bộ sưu tập này với các cặp (id, title) từ lớp enum của tôi.

Ai đó có thể chỉ cho tôi một số ví dụ về cách sử dụng trình trợ giúp chọn không?

Tôi đã tìm thấy this chủ đề về nhóm người dùng, nhưng câu trả lời của Kevin đã không giúp tôi nhiều.

Trả lời

40

Loại quyền là: Seq[(String, String)]. Nó có nghĩa là một chuỗi các chuỗi. Trong Scala có một cách để xác định cặp bằng cách sử dụng mũi tên: a->b == (a, b). Vì vậy, bạn có thể viết ví dụ:

@select(field = myForm("selectField"), options = Seq("foo"->"Foo", "bar"->"Bar")) 

Nhưng có helper khác, như thể hiện trong tài liệu, để xây dựng chuỗi các chọn lựa chọn: options, vì vậy bạn có thể viết lại đoạn code trên như:

@select(myForm("selectField"), options("foo"->"Foo", "bar"->"Bar")) 

trong trường hợp lựa chọn của bạn giá trị cũng giống như nhãn của họ, thậm chí bạn có thể rút ngắn mã để:

@select(myForm("selectField"), options(List("Foo", "Bar"))) 

(lưu ý: trong Chơi 2.0.4 options(List("Foo", "Bar")) không biên dịch, vì vậy bạn có thể thử này options(Seq("Foo", "Bar")))

Để lấp đầy các tùy chọn từ mã Java, cách thuận tiện hơn là sử dụng một trong hai quá tải options chức năng tham gia một java.util.List<String> như tham số (trong này trường hợp tùy chọn giá trị này sẽ được giống như nhãn của họ) hoặc chức năng quá tải lấy java.util.Map<String, String>.

+0

Cảm ơn bạn rất nhiều vì đã trả lời. Nhưng điều này không giải quyết được vấn đề của tôi. Tôi cần tạo bộ sưu tập và điền nó với các giá trị trong Java và sau đó chuyển bộ sưu tập đó vào khuôn mẫu scala. – UltraMaster

+0

Ah, tôi hiểu lầm vấn đề của bạn, quả thật vậy. Tôi đã cập nhật câu trả lời của mình để đề xuất các cách để điền vào các tùy chọn từ mã Java. –

+0

'options (List (" Foo "," Bar "))' không gõ cho tôi vì vậy tôi đã sử dụng '@ myOptions = @ {List (" Foo "," Bar "). Map (str => str-> str)} ' –

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