2017-02-12 63 views
1

我在表單中有一個多選。在調試模式下,interestedIn的boundForm的數據僅爲2(列表中第一項的ID),但我想要使用以下格式獲取所有選定項目Play Framework初學者。從表格中獲取數據

my createuser.scala.html。

... 
    <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" 
... 

當我在數據調試這個線

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

我可以看到,在多個選擇所有所選擇的元素interestedIn []數組。

但是當我在一個模型上定義一個表單時,我只能得到一個元素。可能這是因爲我在列表<>而不是地圖上呈現視圖?如何保存我在Map中的值?

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 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(){} 

當我想定義一個列表,其中我會保持選定的項目從形式

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

我收到此錯誤信息:

'basic' attribute type should not be a container 

我怎樣才能保持所有選擇在Java列表或數組中選擇多個d項目?

回答

0

,獲取多個選擇的對象我使用下面的代碼:

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

則只需在您的形式寫名讀取所有複選的數據只是地名=「interestedIn」的=「intrestedIn []」和在無論是在豆或模型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); 
}