Wie der Hibernate Validierung auf die verschachtelte Liste Objekte?
Muss ich zum überprüfen der Objekte, die gespeichert werden in der Liste auf dem Formular-bean-Objekt.
Unten ist mein form-bean-Objekt.
public class Role implements java.io.Serializable {
//Fields
private int roleId;
@NotBlank
private String roleName;
private boolean active;
@Valid
private List<Module> modules;
//getters anfd setters
}
und unten ist mein Objekt, das vorhanden ist in der Liste von meinem main-form-bean-Objekt
public class Module implements Serializable {
private int id;
@NotBlank
private String moduleName;
//other properties and getters and setters
}
Unten ist meine properties-Datei
# -- Role form --
NotBlank.role.roleName=Role Name can not be blank.
NotBlank.module.moduleName=Module Name can not be blank.
Unten ist Meine JSP-Seite, die form besteht aus einem Funktionsnamen und Module, die Hinzugefügt werden können, um die Rolle.
<table border="0" class="section_tbl2">
<tr>
<td width="150px" valign="top">
<spring:message code="dmx.role.form.label.name"/>
</td>
<td width="10px">:</td>
<td>
<form:input class="txtinput" id="roleName" path="roleName" maxlength="50"/> <form:errors path="roleName" cssClass="error"/>
</td>
</tr>
<tr><td colspan="3" height="8px"></td></tr>
<tr>
<td width="150px" vAlign="top">
Modules
</td>
<td width="10px" vAlign="top">:</td>
<td>
<table>
<tr>
<td>
<input type="button" value="<spring:message code="dmx.role.form.button.addModule.label"/>" onclick="return addModuleRow();"></input>
</td>
</tr>
<tr><td> </td></tr>
</table>
<table cellpadding="0" cellspacing="0" border="0" class="tblstyle1" id="moduleTable">
<thead>
<tr>
<th class="fst" width="200px">
<spring:message code="dmx.role.form.label.moduleName"/>
</th>
<th width="50px"><spring:message code="dmx.role.form.label.create"/></th>
<th width="50px"><spring:message code="dmx.role.form.label.update"/></th>
<th width="50px"><spring:message code="dmx.role.form.label.delete"/></th>
<th width="30px"></th>
</tr>
</thead>
<tbody id="moduleTBody">
<c:forEach items="${role.modules}" var="module" varStatus="status" >
<c:set var="moduleCounter" value="${status.index}"/>
<tr id="moduleRowId_${moduleCounter}">
<td class="fst txt-center">
<form:select onchange="checkIfThisModuleAlreadySelected(this);" class="seloption" id="selectedModule_${moduleCounter}" path="modules[${moduleCounter}].id">
<form:option value="" label="-- Select Module --"/>
<form:options items="${moduleList}" itemLabel="moduleName" itemValue="id" />
</form:select>
</td>
<td class="txt-center">
<form:checkbox id="create_${moduleCounter}" path="modules[${moduleCounter}].create"/>
</td>
<td class="txt-center">
<form:checkbox id="update_${moduleCounter}" path="modules[${moduleCounter}].update"/>
</td>
<td class="txt-center">
<form:checkbox id="delete_${moduleCounter}" path="modules[${moduleCounter}].delete"/>
<td class="txt-center">
<input class="delbtn" id="moduleDelBtn_${moduleCounter}" name="moduleDelBtn[${moduleCounter}]" type="button" onclick="delModuleRow(${moduleCounter});">
</td>
</tr>
</c:forEach>
</tbody>
</table>
</td>
</tr>
<tr><td colspan="3" height="3px"></td></tr>
</table>
Kann ich erfolgreich validieren Sie den Namen der Rolle ein, d.h. wenn role name leer ist, bekomme ich eine Fehlermeldung, aber wenn Modul nicht aktiviert ist ich bekomme keine Fehlermeldung.
Bitte helfen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hinzufügen
@NotNull
und@Size
Einschränkungen in Ihrem Modul-Liste sollte helfen:Den
@Valid
annotation bewirkt, dass die Elemente der kommentierten Sammlung überprüft werden, aber es muss nicht überprüfen, ob diese Auflistung ist nicht null "oder" enthält keine Elemente.