我在表单中有多个选择。在调试模式下,interestIn的boundForm数据只有2(列表中第一项的id),但我想获取所有选中的项目
我的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();
在数据中我可以看到interestIn []数组,其中包含多个select中的所有选定元素。
但是当我在模型上定义表单时,我只得到一个元素。可能这是因为我在列表上渲染视图&lt;&gt;而不是地图?如何保存我在地图中添加的值?
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列表或数组中保留多个select中的所有选定项?
答案 0 :(得分:1)
您可以简单地读取所有Multiselect数据,而不是名称=&#34; interestIn&#34;在你的表格中写名=&#34;感兴趣的[]&#34;在bean中或在模型String value=null;
for(int i=0;i<intrestedIn.size();i++){
value=intrestedIn.get(i);
System.out.println(value);
}
中的java中
之后,您可以遍历列表并获取数据,如
{{1}}
答案 1 :(得分:0)
要获取多个选定对象,请使用以下代码:
DynamicForm requestData = Form.form().bindFromRequest();
DynamicForm.Dynamic s = requestData.get();
Map<String, String[]> map = request().body().asFormUrlEncoded();
String[] checkedVal = map.get("interestedIn");