編輯:表單不應該包括枚舉的所有類路徑,只是枚舉名稱。所以在ContactType類,put方法必須被替換到這一點:
put(value.name(),name);
我無法枚舉綁定到類。在控制器我有類似的東西:
public Result saveUser() {
Form<User> userForm = form(User.class).bindFromRequest();
if(userForm.hasErrors()) {
return badRequest(createUser.render(userForm));
}
User user=userForm.get();
user.save();
Logger.info(user.contacts.toString());
flash("success", "User " + userForm.get().identity + " has been created");
return GO_ADMIN;
}
這是一直返回我「error.invalid」。 的POST響應看起來像這樣:
identity=asas&
status=1&
contacts[0].name=fasddf&
contacts[0].prename=afadfs&
contacts[0][email protected]&
contacts[0].contactType=models.constats.ContactType.MANAGER
只是爲了有更多的信息,我在這裏提供的用戶和聯繫人類
用戶
public class User extends Model{
@Constraints.Required(message = "Field is required")
public String identity;
public Integer status;
@Valid
public List<Contact> contacts;
}
聯繫
public class Contact extends Generic{
@Constraints.Required(message = "Field is required")
public String name;
@Constraints.Required(message = "Field is required")
public String prename;
@Constraints.Required(message = "Field is required")
@Constraints.Email
public String email;
public ContactType contactType;
}
和
ContactType
public enum ContactType {
ADMIN,SUPPORT,MANAGER,DEVELOPER,DESIGNER,NO_INFORMATION;
}
public static final Map<String,Object> types=new HashMap<String,Object>()
{{
for (ContactType value : ContactType.values()) {
String name=value.name().toLowerCase();
name=Character.toUpperCase(name.charAt(0)) + name.substring(1).replaceAll("_", " ");
put(ContactType.class.getName() + "."+ value.name(),name);
}
}};
感謝。它適合我! :) – ainla
@ainla不客氣。我手動添加了你的編輯,因爲他們被拒絕了,但我相信區分'type'(保留)和'cType'非常重要,謝謝指出! – Aerus
@ainla,大家我們如何能夠爲任何枚舉類型創建一個視圖? –