Struts2: Wiederauffüllen von Textfeldern mit List <Integer> nach der Validierung
Ich habe eine JSP-Seite mit folgendem Code:
<div id="TextBoxesGroup"> <div class="control-group">
<label class="control-label" for="inputAuto">Room type</label>
<div class="controls">
<!-- <input type="text" id="inputAuto" class="grd-white" /> -->
<s:select id="inputAuto" data-form="select2" cssStyle="width:200px" data-placeholder="Select Room Type" name="resortRoomtype" headerKey="-1" list="roomtypeList"/>
</div>
</div>
<div class="control-group">
<label class="control-label" for="inputAuto">Room Numbers</label>
<div class="controls">
<!-- <input type="text" id="inputAuto" class="grd-white" /> -->
<s:textfield id="inputAuto" cssClass="grd-white" name="roomnumbers" onkeypress="return isNumber(event)"/>
<s:label name="roomNumberError" cssClass="help-inline" cssStyle=" color: red;"></s:label>
</div>
</div>
</div>
<div >
<input type='button' value='+' id='addButton' Class="btn " />
<input type='button' value='-' id='removeButton' Class="btn" />
</div>
Mein js für das Hinzufügen und Entfernen ist:
<script type="text/javascript">
$(document).ready(function () {
$("#addButton").click(function () {
if( ($('#TextBoxesGroup').children().size()+1) > 12) {
alert("Resort don't have more rooms" );
return false;
}
var id = ($('#TextBoxesGroup').children().size()+1).toString();
$('#TextBoxesGroup').append('<div class="control-group" id="control-group">
<label class="control-label" for="inputSelectGroup">Room Type</label>
<div class="controls"><select style="width:200px" id="inputSelectGroup" name="resortRoomtype" data-form="select2">
<option value="Single Room">Single Room</option>
<option value="Double Room">Double Room</option>
<option value="Twin Room">Twin Room</option>
<option value="Interconnecting Room">Interconnecting Room</option>
<option value="Suite">Suite</option>
<option value="Pent House Suite">Pent House Suite</option>
</select>
</div>
</div>
<div class="control-group" id="control-group">
<label class="control-label" for="inputauto">Number of rooms</label>
<div class="controls">
<input type="text" Class="grd-white" id="inputauto" name="roomnumbers"
onkeypress="return isNumber(event)" >
</div>
</div>');
});
$("#removeButton").click(function () {
if ($('#TextBoxesGroup').children().size() == 2) {
alert("No more textbox to remove");
return false;
}
$('#TextBoxesGroup').children().last().remove();
$('#TextBoxesGroup').children().last().remove();
});
});
</script>
und in meiner Actionklasse habe ich:
private List<Integer> roomnumbers;
getter/setters;
und ich habe eine Validierungsmethode, die validiert, ob ein Feld leer ist oder nicht. Wenn leer, wird EINGABE zurückgegeben und ich komme zurück zu meiner Formularseite (z. B. add_resort.jsp). So habe ich zum Beispiel Eingaben wie für einen Zimmertyp gemacht: Einzelzimmer Zimmernummer ist :: 2 und für Zimmertyp: Doppelzimmer Zimmernummer ist :: leer (ich habe vergessen, eine Nummer einzugeben) und dann klicke ich auf die Schaltfläche Änderungen speichern und die Validierung findet statt Wenn ich zu dieser Seite in meinem Raumnummern-Textfeld zurückkehre, habe ich einen Wert wie diesen erhalten:[2, null]
Testfall::::::
vor der Validierung Raumnummer = 2
nach Validierung Raumnummer = [2]
Testfall::::::
vor der Validierung roomnumber = 2 roomnumber = null
nach Validierung Raumnummer = [2, null]
in validate method
if(roomnumbers != null){
roomnumbers.add(new Integer(55));
setRoomnumbers(roomnumbers);
addFieldError("roomnumbers", "Please Enter valid room number.");
}