【发布时间】:2014-09-22 17:27:39
【问题描述】:
我是 Play 框架的新手,我正在尝试保存管理员在视图中输入的用户信息。我正在使用表单助手渲染视图。视图中的一个字段是下拉框,它允许用户选择等级级别,其值为等级 id,显示文本具有等级名称。在我的用户模型中,我将字段作为 GradeLevel 引用 GradeLevel 模型。从下拉框中选择相应的等级 ID 时,我不知道如何设置 GradeLevel 对象。现在它抛出非法状态异常:提交表单时没有值。
给出下面的代码sn-ps。
查看
@(userForm: Form[UserDetails],gradeMap: HashMap[String,String])
@import helper._
@main("Sample") {
<h1>Add User</h1>
@form(action = routes.UserController.validate()){
@inputText(userForm("firstName"), '_label -> "Firstname",'_showConstraints -> false)
@inputText(userForm("lastName"), '_label -> "Lastname",'_showConstraints -> false)
@select(userForm("gradeLevel"), options(gradeMap), '_label -> "Grade/Tier")
<input type="submit" class="btn btn-primary" value="Save">
}
}
用户模型
@Entity
@Table(name="user")
public class UserDetails extends Model
{
@Id
@GeneratedValue(strategy= GenerationType.AUTO)
public int id;
@Column(length = 40, nullable = false, name = "first_name")
//@Constraints.Required
public String firstName;
@Column(length = 40, nullable = false, name = "last_name")
//@Constraints.Required
public String lastName;
@JoinColumn(nullable = false, name = "level_id")
@ManyToOne(fetch = FetchType.LAZY)
public GradeLevel gradeLevel;
}
年级模型
@Entity
@Table(name="grade_level")
public class GradeLevel extends Model
{
@Id
@GeneratedValue(strategy= GenerationType.AUTO)
public int id;
@Column(length = 40, nullable = false)
@Constraints.MinLength(2)
@Constraints.MaxLength(40)
public String name;
}
控制器
public static Result validate()
{
Form<UserDetails> submittedForm = userForm.bindFromRequest();
if(userForm.hasErrors())
{
return redirect(routes.SessionController.home());
}
else
{
UserDetails userDetails = null;
try
{
userDetails = submittedForm.get();
}
catch (IllegalStateException illegalException)
{
Logger.error("IllegalStateException",illegalException);
return redirect(routes.SessionController.home());
}
userDetails.save();
return redirect(routes.UserController.show());
}
}
【问题讨论】:
标签: java playframework playframework-2.0