首页 > 解决方案 > Play Framework:如何在错误请求期间再次访问我提交的表单,我的代码无法再次访问列表

问题描述

index.scala.html

@(form: Form[applicationmodel.ApplicationModel])
@if(form.hasErrors) {
@for((key, value) <- form.errors) {
     <p>@value(0).message</p>
}
} else {
<form action="/search" method="GET">
            <label class="search-label">ID</label>
            <input type="text" name="empId" id="empId" value="@(form.get().empId)"/>
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            <label class="search-label">HIRE DATE</label>
            <input type="text" name="hireDateFrom" id="hireDateFrom" value="@(form.get().hireDateFrom)" autocomplete="off"/>
                <div id="curly-dash">~</div>
            <input type="text" name="hireDateTo" id="hireDateTo" value="@(form.get().hireDateTo)" autocomplete="off"/>
                <br>
            <label class="search-label">FIRST NAME</label>
            <input type="text" name="firstName" id="firstName" value="@(form.get().firstName)"/>
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            <label class="search-label">MANAGER</label>
            <input type="text" name="managerName" id="managerName" value="@(form.get().managerName)"/>
                <br>
            <div>
                <label class="search-label">LAST NAME</label>
                <input type="text" name="lastName" id="lastName" value="@(form.get().lastName)"/>
                &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                <input type="image" src="@routes.Assets.at("images/BtnSearch.jpg")">
            </div>
        </form>
    </div>
    <form action="/addEdit" method="POST" id="list-form">
        <table id="table-list">
            <caption class="position-relative">
                <img src="@routes.Assets.at("images/Search.jpg")" id="btn-search" class="btn-size">
                <h1 class="inline-block">Employee Records</h1>
                <img src="@routes.Assets.at("images/Add.jpg")" id="btn-add" class="btn-size">
            </caption>
            <thead>
                <tr>
                    <th class="solid-green-border column-title">EMPLOYEE_ID</th>
                    <th class="solid-green-border column-title">FIRST NAME</th>
                    <th class="solid-green-border column-title">LAST NAME</th>
                    <th class="solid-green-border column-title">EMAIL</th>
                    <th class="solid-green-border column-title">PHONE NUMBER</th>
                    <th class="solid-green-border column-title">HIRE DATE</th>
                    <th class="solid-green-border column-title">JOB</th>
                    <th class="solid-green-border column-title">SALARY</th>
                    <th class="solid-green-border column-title">COMMISSION_PCT</th>
                    <th class="solid-green-border column-title">DEPARTMENT</th>
                    <th class="solid-green-border column-title">MANAGER</th>
                    <th class="solid-green-border column-title">ACTION</th>
                </tr>
            </thead>
            <tbody>
                @for(item <- form.get().emplist) {
                <tr>
                    <td class="solid-green-border column-content">@item.employeeId</td>
                    <td class="solid-green-border column-content">@item.firstName</td>
                    <td class="solid-green-border column-content">@item.lastName</td>
                    <td class="solid-green-border column-content">@item.email</td>
                    <td class="solid-green-border column-content">@item.phoneNo</td>
                    <td class="solid-green-border column-content">
                        <div class="position-relative">
                            <span class="class-hiredate">@item.displayHiredate</span>
                            <input type="image" src="/assets/images/imgDate.jpg" class="icon-size date" disabled>
                        </div>
                    </td>
                    <td class="solid-green-border column-content">@item.job.jobTitle</td>
                    <td class="solid-green-border column-content">@item.displaySalary</td>
                    <td class="solid-green-border column-content">@item.commission</td>
                    <td class="solid-green-border column-content department">@item.deptName</td>
                    <td class="solid-green-border column-content">@item.managerName</td>
                    <td class="solid-green-border column-content">
                        <input type="image" src="@routes.Assets.at("images/Edit.jpg")" class="icon-size edit"></td>
                </tr>
                }
            </tbody>
        </table>
         <input type="image" src="@routes.Assets.at("images/BtnSave.jpg")"  id="btn-save">
        </form>
}

在错误请求期间我应该使用什么语法再次访问表单并获取该 emplist,form.get() 在错误请求时是没有用的,看起来表单本身在索引期间是不一样的

控制器 索引

@Transactional
public static Result index() {
System.out.print("asdf");
appModel = new ApplicationModel();
Form<ApplicationModel> form = 
Form.form(ApplicationModel.class).fill(appModel.init(appModel));
return ok(index.render(form));
}

控制器 在提交时我希望再次显示它,就像我提交错误时一样,我现在只能显示错误而不保留它的值

@Transactional
public static Result addEdit() {
Form<ApplicationModel> form = 
Form.form(ApplicationModel.class).bindFromRequest();
if (form.hasErrors()) {
  return badRequest(index.render(form));
}
form.get().update();
ApplicationModel newAppModel = new ApplicationModel();
form = Form.form(ApplicationModel.class).fill(newAppModel.init(newAppModel));
return ok(index.render(form));
}

标签: javaeclipseplayframework-2.1

解决方案


解决方案:经过多次尝试和错误

用它括起来并访问您想要实现的特定值

@for(i <- 0 to {form("emplist").indexes.size.toInt} - 1) {
}

*我个人希望这将有助于后代使用游戏框架来帮助他们通过迭代访问表单值:) *


推荐阅读