2017-02-12 6 views
1

У меня есть несколько вариантов в форме. В режиме отладки данные boundForm для интересующего являются всего 2 (идентификатор первого элемента в списке), но я хотел бы получить все выбранные элементы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 [] массив со всеми выбранными элементами множественного выбора.

Но Когда я определяю форму на модели, я получаю только один элемент. Может быть, это потому, что я отображаю представление в списке <> вместо карты? Как сохранить значения I gat на карте?

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 

Как я могу сохранить весь выбор d элементов из множественного выбора в списке или массиве Java?

ответ

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

В любом случае, он получает только идентификатор первого выбранного элемента. Он не получает все выбранные значения. –

+0

Странно, потому что я использую этот метод с помощью кнопки multi select и check –

1

Вы можете просто прочитать все данные MULTISELECT только вместо имени = «interestedIn» ваше имя формы записи = «intrestedIn []» и в Java либо в компоненте или в модели declare List<String> intrestedIn= new ArrayList<String>(); после этого вы можете перемещаться по списку и получить данные, такие как

String value=null; 
for(int i=0;i<intrestedIn.size();i++){ 
value=intrestedIn.get(i); 
System.out.println(value); 
}