spring - 如何验证以百里香叶形式提交的一对多文件
问题描述
我正在使用 Thymeleaf 和 Spring Boot Controller 验证动态创建的字段,其中我对相同形式的两个实体使用一对多关系。但是当我写 th:if 条件来显示错误时它会抛出一个错误。
<input type="hidden" value="0" id="tableRowCount" >
<table class="table table-borderless" id="myTable">
<thead>
<tr>
<th>Designation <span style="color: #ff0000">*</span>
</th>
<th>Officer Name <span style="color: #ff0000">*</span>
</th>
<th>Organization Categories <span style="color: #ff0000">*</span>
</th>
<th id="othertextnew">Other Organization <span
style="color: #ff0000">*</span>
</th>
<th>Department Name <span style="color: #ff0000">*</span>
</th>
<th>SubDepartment Name <span style="color: #ff0000">*</span>
</th>
<th>Address 1 <span style="color: #ff0000">*</span>
</th>
<th>Address 2</th>
<th>City/Town/Village</th>
<th>Phone Number</th>
<th>Email</th>
<th>Pin</th>
</tr>
</thead>
<tbody id="dynamicTableContents">
<tr id="row_0">
<td>
<div class="form-group required">
<input type="text" class="form-control bill"
th:field="${complainantBean.respondent[0].respondentDesignationname}"
placeholder="Please fill Desgination of the Officer">
<small>Error message</small><span style="color: red;"
class="error" id="designationError"></span> <span
th:if="${#fields.hasErrors('complainantBean.respondent[0].respondentDesignationname')}"
th:errors="*{complainantBean.respondent[0].respondentDesignationname}"
id="erroraddressOfOrg1" class="help-block"></span>
</div>
</td>
<td>
<div class="form-group required">
<input type="text"
th:field="${complainantBean.respondent[0].respondentOfficerName}"
class="form-control bill"
placeholder="Please fill Officer Name">
</div>
</td>
<td>
<div>
<select class="form-control bill orgId" id="orgId_0"
th:field="${complainantBean.respondent[0].respondentorgCode}"
onchange="updateSubOrgCode('0');">
<option value='-1'>SELECT</option>
<option th:each="ob:${orgList}" th:value="${ob.orgCode}"
th:text="${ob.orgName}" /></option>
</select>
</div>
</td>
<td><input id="othertext_0" style="display: none;"
type="text"
th:field="${complainantBean.respondent[0].respondentothersOrg}"
class="form-control bill othertextclass"
placeholder="Please fill Other Org Name"></td>
<td>
<div>
<select id="suborgCode_0"
th:field="${complainantBean.respondent[0].respondentsubOrgCode}"
class="form-control bill"
onchange="updateSubDepartmentCode('0');">
<option value='-1'>SELECT</option>
<option th:each="ob:${suborgCode}" th:value="${ob.subOrgCode}"
th:text="${ob.subOrgName}" /></option>
</select>
</div>
</td>
<td>
<div>
<select id="subDepartment_0"
th:field="${complainantBean.respondent[0].respondentdepartmentCode}"
class="form-control bill">
<option value='-1'>SELECT</option>
<option th:each="ob:${department}" th:value="${ob.deptCode}"
th:text="${ob.deptName}" /></option>
</select>
</div>
</td>
<td>
<div class="form-group required">
<input type="text"
th:field="${complainantBean.respondent[0].respondentAddressone}"
class="form-control bill"
placeholder="Please fill Respondent Address1">
</div>
</td>
<td>
<div>
<input type="text" class="form-control bill"
th:field="${complainantBean.respondent[0].respondentAddresstwo}"
placeholder="Please fill Respondent Address 2">
</div>
</td>
<td>
<div>
<input type="text"
th:field="${complainantBean.respondent[0].citytownvillage}"
class="form-control bill"
placeholder="Please fill Respondent City/Town/Village">
</div>
</td>
<td>
<div class="form-group required">
<input type="text"
th:field="${complainantBean.respondent[0].respondentTelephoneNumber}"
class="form-control bill"
placeholder="Please fill Respondent Telephone Number">
</div>
</td>
<td>
<div>
<input type="text"
th:field="${complainantBean.respondent[0].respondentEmail}"
class="form-control bill"
placeholder="Please fill Respondent Email">
</div>
</td>
<td>
<div>
<input type="text"
th:field="${complainantBean.respondent[0].respondentpincode}"
class="form-control bill"
placeholder="Please fill Respondent Pin Code">
</div>
</td>
</tr>
<tr>
<td colspan="25" align="right" class="tblcontent"
style="border-top: none">
<button type="button" name="addBill" id="add"
onclick="addRow();" class="btn btn-sm btn-success mt-2">
<i class="fas fa-plus"></i>
</button>
</td>
</tr>
</tbody>
</table>
这是控制器代码
@PostMapping("/complainant-save")
public ModelAndView ComplaintSaveComplainant(
@Valid @ModelAttribute("complainantBean") ComplainantBean complaintBean, BindingResult br,
Authentication authentication, ModelAndView mv) {
System.out.println("Data in ComplainantBean is " + complaintBean);
if (!br.hasErrors()) {
ComplaintDto complaintDto = complaintService.complaintentSaveProcess(complaintBean);
mv.addObject("refno", complaintDto.getRefno());
mv.setViewName("grivance-save");
return mv;
} else {
mv.addObject("stateList", stateRepository.findAll());
mv.addObject("district_dc", districtRepository.findByStatecodeid(complaintBean.getCertificateIssueState()));
mv.addObject("district_r", districtRepository.findByStatecodeid(complaintBean.getrState()));
mv.addObject("district_res", districtRepository.findByStatecodeid(complaintBean.getStateOfOrg()));
mv.addObject("orgList", orgCategoriseRepositry.findAll());
mv.addObject("disability", disabilityRepo.findAll());
mv.addObject("caseTypeList", caseTypeRepo.findAll());
//mv.addObject("suborgCode", subOrgRepositry.findByOrgcode(complaintBean.getOrgCode()));
//mv.addObject("department", departmentRepo.findBysubOrgCode(complaintBean.getSubOrgCode()));
mv.addObject("complaintBean", complaintBean);
//mv.addObject("respondents", respondent);
mv.setViewName("complainant");
return mv;
}
}
this is ComplainantBean where I have used Respondent Entity
public List<Respondent> respondent;
public List<Respondent> getRespondent() {
return respondent;
}
public void setRespondent(List<Respondent> respondent) {
this.respondent = respondent;
}
对于 ComplainantBean,我使用了 DTO,即 ComplaintDto,我将映射映射到响应实体
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "ref_no")
public List<Respondent> respondent;
public List<Respondent> getRespondent() {
return respondent;
}
public void setRespondent(List<Respondent> respondent) {
this.respondent = respondent;
}
最后在 ComplaintDto 表中保存了 ComplainantBean 和响应实体的数据,但是当我要对响应实体字段进行验证时,它会抛出错误。请帮我。
解决方案
推荐阅读
- xpath - 具有由 JSON 值计算的条件的 XPath 选择器
- java - java扩展和实现
- java - EJB 注释不适用于 Restful 服务
- node.js - Kubernetes API 在可用时获取服务端点 IP
- php - 更新基于 PHP 会话的购物车中的数量
- php - PHP:向文件添加新权限
- javascript - 我可以使用js变量在jsp中调用java方法吗?
- c# - 需要从用户输入中获取 2 个日期并在 if 语句中进行比较
- gulp - 如何将 css 直接注入到我的 index.html 中?
- python - 使用 ThreadPoolExecutor 忽略未使用的期货