Play2 中 inputRadioGroup 的 Java 示例

标签 java forms playframework playframework-2.1

我无法找到如何为我的表单实现单选按钮。我需要在该组中有 5 个单选按钮,代表从 1 到 5 的等级。

表格:

public static class MobileWriteReview {

    @Constraints.MinLength(1)
    @Constraints.MaxLength(32)
    @Constraints.Required
    public String firstName;

    @Constraints.MinLength(1)
    @Constraints.MaxLength(32)
    @Constraints.Required
    public String lastName;

    @Constraints.MinLength(5)
    @Constraints.Required
    public String password;

    @Constraints.MinLength(5)
    @Constraints.Required
    public String repeatPassword;

    @Constraints.Required
    public int grade;

    @Constraints.MinLength(30)
    @Constraints.Required
    public String text;

    /**
     * Required by play.
     */
    public MobileWriteReview() {
    }

    public MobileWriteReview(int grade) {
        this.grade = grade;
    }
}

Controller 方法:

private static final Form<MobileWriteReview> MOBILE_WRITE_REVIEW_FORM = form(MobileWriteReview.class);

public static Result review(){
        MobileWriteReview mobileWriteReview = new MobileWriteReview(3);
        MOBILE_WRITE_REVIEW_FORM.fill(mobileWriteReview);
        return ok(mobileInviteToReview.render(MOBILE_WRITE_REVIEW_FORM));
    }

public static Result doReview(){
        final Form<MobileWriteReview> filledForm = MOBILE_WRITE_REVIEW_FORM.bindFromRequest();
        if (filledForm.hasErrors()) {
            // User did not fill everything properly
            return badRequest(mobileInviteToReview.render(filledForm));
        } else {
            // Everything was filled
            return ok();
        }
}

view.scala.html

@(inviteForm: Form[_])
@styles = {

}
@scripts = {

}

@import helper._

@helper.form(routes.MobileInviteToReview.doReview) {

    @if(inviteForm.hasGlobalErrors) {
    <p class="error">
        <span class="label label-important">@inviteForm.globalError.message</span>
    </p>
    }

    @inputRadioGroup(
    // appropriate code here
    )

}

所以我的问题是如何在 Controller 中设置表单,然后在 View 中使用它?

最佳答案

首先,您的代码在 Controller 中渲染表单时出现错误。

解决方案可能如下所示:

Controller :

private static final Form<MobileWriteReview> MOBILE_WRITE_REVIEW_FORM = Form.form(MobileWriteReview.class); // this field declared as final

public static Result review(){
    MobileWriteReview mobileWriteReview = new MobileWriteReview(4);
    Logger.info("Mobile Write Review grade = " + mobileWriteReview.grade);

    // this is proper way to fill the form using existing value
    return ok(views.html.mobileInviteToReview.render(MOBILE_WRITE_REVIEW_FORM.fill(mobileWriteReview)));
}

public static Result doReview(){
    final Form<MobileWriteReview> filledForm = MOBILE_WRITE_REVIEW_FORM.bindFromRequest();
    MobileWriteReview mobileWriteReview = filledForm.get();
    Logger.info("Grade submitted = " + mobileWriteReview.grade);

    if (filledForm.hasErrors()) {
        // User did not fill everything properly
        return badRequest(views.html.mobileInviteToReview.render(filledForm));
    } else {
        // Everything was filled
        return ok("Grade submitted = " + mobileWriteReview.grade);
    }
}

观看次数:

@(inviteForm: Form[models.MobileWriteReview])
@import views.html.helper._

@main(title = "Input Radio Group Sample") {
   @form(action = routes.Application.doReview()) {
      @****** This helper can accomodate selected value of radio button if present *****@
      @inputRadioGroup(
         inviteForm("grade"),
         options = options("1" -> "1", "2" -> "2", "3" -> "3", "4" -> "4", "5" -> "5")
      )

      <input type="submit" value="Post">
    }
}

请参阅 inputRadioGroup 帮助程序的文档 here .

关于Play2 中 inputRadioGroup 的 Java 示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15051711/

相关文章:

android - 从 JSON 创建 Android 输入表单

php - 无法弄清楚如何将 &lt;input type ="checkbox"> 转换为 PHP bool 值

css - 无法访问子元素中的样式表

playframework - GlobalSettings onStart 仅在第一次请求后触发

java - 从数字中解析并检查日期的有效性

java - "Spring Data - JPA"是 JPA 实现还是只是对另一个 JPA 实现的扩展?

java - 如何使用 Java 从数据库打印 Itext Pdf 报告上的印地语文本?

java - 让一个球在另一个球内弹跳

java - 安装 Play Framework 1.2.7 时出现问题

python - Django 表单不显示