2017-02-12 41 views
1

フォームに複数選択があります。デバッグモードでは、interestedInのboundFormのデータは2(リストの最初の項目のID)ですが、選択したすべての項目を取得したいのですがPlay Framework初心者。フォームからデータを取得

my createuser.scala.htmlという形式を使用します。私は、データは、この線

Http.MultipartFormData body = request().body().asMultipartFormData(); 

をデバッグするとき

... 
    <select class="form-control select2-multi" name="interestedIn" id="interestedIn" multiple="multiple"> 
    @for(interest <- interests){ 
     <option value="@interest.interestId">@interest.interestName</option> 
    } 
    </select> 

@helper.inputText(userForm("user"), 'class -> "form-control" 
... 

私は複数選択中のすべての選択された要素とinterestedIn []配列を見ることができます。

しかし、モデルにフォームを定義するとき、私は1つの要素しか得ません。これは地図の代わりにリスト<>のビューをレンダリングするためですか?マップに値を保存するにはどうすればよいですか?

private static final Form<BusyUser> userForm = Form.form(BusyUser.class); 

Form<BusyUser> boundForm = userForm.bindFromRequest(); 

List<Interest> interests= NeoDataProvider.getInterests(play.api.i18n.Lang.defaultLang().language()); 
BusyUser user = boundForm.get(); 
user.mail=user.user; //here I assign the mail of the user the value from the createUser form field 
user.active=true; 
//HERE I WANT TO GET THE DATA FROM THE MULTIPLE SELECT 

BusyUser.class:

:私は

public List<String> interestedIn = new ArrayList<>(); 

は、私は、このエラーメッセージが表示されますフォームから選択した項目を続けるだろうリストを定義したい

public long id; 
@Id 
@Constraints.Required(message = "*") 
@Constraints.Email(message = "?") 
public String user; 
@Constraints.Required(message = "*") 
@Column(unique=true) 
public String visibleUsername; 
//@Transient 
public String password; 

//@Constraints.Required(message = "*") 
public String name; 
//@Constraints.Required(message = "*") 
@Constraints.Email(message = "?") 
@Column(unique=true) 
public String mail; 

public Boolean active; 
@Formats.DateTime(pattern = "yyyy-MM-dd HH:mm:ss") 
public Date lastLogin; 

public String authToken; 
public String language; 

public BusyUser(){} 

'basic' attribute type should not be a container 

どのようにすべてのセレクタ複数の項目から選択した項目をJavaのリストまたは配列に含めますか?私は、次のコードを使用する複数の選択したオブジェクト取得するに

答えて

0

:あなたは単にあなたのフォームの書き込み名=「intrestedIn []」に名前だけ=「interestedIn」の代わりに、すべての複数選択のデータを読み取ることができ

DynamicForm requestData = Form.form().bindFromRequest(); 
DynamicForm.Dynamic s = requestData.get(); 
Map<String, String[]> map = request().body().asFormUrlEncoded(); 
String[] checkedVal = map.get("interestedIn"); 
+0

のようなデータはありがとう得ることができます!私はすぐにそれを確認します –

+0

それはとにかく最初に選択した項目のIDだけを取得します。選択したすべての値が取得されない –

+0

このメソッドを複数の選択とチェックボタンで使用すると不思議です –

1

をし、その後Bean内またはモデルdeclare List<String> intrestedIn= new ArrayList<String>(); のいずれかでJavaであなたは、リストを反復処理し

String value=null; 
for(int i=0;i<intrestedIn.size();i++){ 
value=intrestedIn.get(i); 
System.out.println(value); 
} 
関連する問題