2 votes

Remplissage de la liste déroulante @select en java

J'utilise play framework 2.0.4

Dans mon fichier java,

return ok(views.html.name.render(Name.all(),NameForm));

Dans mon fichier html,

@(name: List[Name],NameForm: Form[Name])

Je veux créer une liste déroulante (comme l'utilisation des balises select, option en HTML) à partir des données du tableau de noms en utilisant @select dans @import helper._.
Je suis assez nouveau sur Play donc quelqu'un peut-il me montrer comment je peux archiver ceci ?
Merci beaucoup.

8voto

by0 Points 1903

Une façon de le faire est de définir vos options comme une liste, renvoyée par une méthode statique

Créer une classe Java

public class ComboboxOpts {
    public static List<String> myCustomOptions(){
        List<String> tmp = new ArrayList();

        tmp.add("This is option 1");
        tmp.add("This is option 2");
        tmp.add("This is option 3");
        return tmp;
    }
....
}

Dans votre HTML, importez l'aide

@import helper._

et essayer

 @select(
     myForm("myDropdownId"),
     options = options(ComboboxOpts.myCustomOptions),
     '_label -> "This is my dropdown label",
     '_showConstraints -> false
 )

Une autre façon de procéder consiste à définir un champ de formulaire personnalisé. Voir ce qui suit lien

@helper.form(action = routes.Application.submit(), 'id -> "myForm") {
    <select>
        <option>This is option 1</option>
        <option>This is option 2</option>
        <option>This is option 3</option>
    </select>
}

Veillez à effectuer une recherche approfondie sur Google avant de poser ces questions. Je suis sûr qu'il existe des tutoriels ou que la même question a déjà été posée.

Cheers

4voto

SubLock69 Points 31
Use String in List[String] (in your html) List<String> in your java file.
Or if you want both value and text of drop down to be different like :

    <option value="1">One</option>

Use Map<String, String> instead of List<String> and pass it to @select

    Java file:
    Map<String, String> options = new HashMap<String, String>();
        options.put("1", "One");
        options.put("2", "Two");
    return ok(views.html.name.render(options, NameForm));

    Html:
    @(name: Map<String, String>,NameForm: Form[Name])

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X