我尝试使用Struts 2(2.3.34)进行客户端验证,但问题是javascript验证代码仅在devMode=true
时完全生成。我正在使用xhtml主题。
当devMode=false
只生成getFieldValue
函数时,返回:
阅读form-close-validate.ftl
文件,似乎是' tagNames'列表或'验证器'列表是空的?
请参阅:form-close-validate frament
我的表格:
<s:form action="empleado_editsave" method="POST" name="empForm" namespace="/admin" theme="xhtml" validate="true" id="formEmpleadoEdit">
...
</s:form>
编辑:找到devMode=false
和reloadXmlConfiguration=true
的解决方法,但它仍然远非理想。
EDIT2:使用reloadXmlConfiguration=false
生成以下js代码:
<script type="text/javascript">
function validateForm_formEmpleadoEdit() {
var getFieldValue = function(field) {
var type = field.type ? field.type : field[0].type;
if (type == 'select-one' || type == 'select-multiple') {
return (field.selectedIndex == -1 ? "" : field.options[field.selectedIndex].value);
} else if (type == 'checkbox' || type == 'radio') {
if (!field.length) {
field = [field];
}
for (var i = 0; i < field.length; i++) {
if (field[i].checked) {
return field[i].value;
}
}
return "";
}
return field.value;
}
form = document.getElementById("formEmpleadoEdit");
clearErrorMessages(form);
clearErrorLabels(form);
var errors = false;
var continueValidation = true;
return !errors;
}
</script>
使用reloadXmlConfiguration=true
生成:
<script type="text/javascript">
function validateForm_formEmpleadoEdit() {
var getFieldValue = function(field) {
var type = field.type ? field.type : field[0].type;
if (type == 'select-one' || type == 'select-multiple') {
return (field.selectedIndex == -1 ? "" : field.options[field.selectedIndex].value);
} else if (type == 'checkbox' || type == 'radio') {
if (!field.length) {
field = [field];
}
for (var i = 0; i < field.length; i++) {
if (field[i].checked) {
return field[i].value;
}
}
return "";
}
return field.value;
}
form = document.getElementById("formEmpleadoEdit");
clearErrorMessages(form);
clearErrorLabels(form);
var errors = false;
var continueValidation = true;
// field name: empleado.legajo
// validator name: required
if (form.elements['empleado.legajo']) {
field = form.elements['empleado.legajo'];
var error = "El legajo es requerido";
var fieldValue = getFieldValue(field);
if (fieldValue == "") {
addError(field, error);
errors = true;
}
}
// field name: empleado.legajo
// validator name: int
if (form.elements['empleado.legajo']) {
field = form.elements['empleado.legajo'];
var error = "El legajo es inválido";
var fieldValue = getFieldValue(field);
if (continueValidation && fieldValue != null) {
if (parseInt(fieldValue) <
1 ||
false) {
addError(field, error);
errors = true;
}
}
}
// field name: empleado.nombre
// validator name: requiredstring
if (form.elements['empleado.nombre']) {
field = form.elements['empleado.nombre'];
var error = "El nombre es requerido";
var fieldValue = getFieldValue(field);
if (continueValidation && fieldValue != null && (fieldValue == "" || fieldValue.replace(/^\s+|\s+$/g,"").length == 0)) {
addError(field, error);
errors = true;
}
}
// field name: empleado.apellido
// validator name: requiredstring
if (form.elements['empleado.apellido']) {
field = form.elements['empleado.apellido'];
var error = "El apellido es requerido";
var fieldValue = getFieldValue(field);
if (continueValidation && fieldValue != null && (fieldValue == "" || fieldValue.replace(/^\s+|\s+$/g,"").length == 0)) {
addError(field, error);
errors = true;
}
}
// field name: empleado.telefonos
// validator name: requiredstring
if (form.elements['empleado.telefonos']) {
field = form.elements['empleado.telefonos'];
var error = "El teléfono es requerido";
var fieldValue = getFieldValue(field);
if (continueValidation && fieldValue != null && (fieldValue == "" || fieldValue.replace(/^\s+|\s+$/g,"").length == 0)) {
addError(field, error);
errors = true;
}
}
// field name: empleado.horaentrada
// validator name: requiredstring
if (form.elements['empleado.horaentrada']) {
field = form.elements['empleado.horaentrada'];
var error = "El horario de entrada es requerido";
var fieldValue = getFieldValue(field);
if (continueValidation && fieldValue != null && (fieldValue == "" || fieldValue.replace(/^\s+|\s+$/g,"").length == 0)) {
addError(field, error);
errors = true;
}
}
// field name: empleado.horaentrada
// validator name: regex
if (form.elements['empleado.horaentrada']) {
field = form.elements['empleado.horaentrada'];
var error = "El horario de entrada es inválido. Use el formato HH:MM";
var fieldValue = getFieldValue(field);
if (continueValidation && fieldValue != null && !fieldValue.match("^(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$")) {
addError(field, error);
errors = true;
}
}
// field name: empleado.horasalida
// validator name: requiredstring
if (form.elements['empleado.horasalida']) {
field = form.elements['empleado.horasalida'];
var error = "El horario de salida es requerido";
var fieldValue = getFieldValue(field);
if (continueValidation && fieldValue != null && (fieldValue == "" || fieldValue.replace(/^\s+|\s+$/g,"").length == 0)) {
addError(field, error);
errors = true;
}
}
// field name: empleado.horasalida
// validator name: regex
if (form.elements['empleado.horasalida']) {
field = form.elements['empleado.horasalida'];
var error = "El horario de salida es inválido. Use el formato HH:MM";
var fieldValue = getFieldValue(field);
if (continueValidation && fieldValue != null && !fieldValue.match("^(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$")) {
addError(field, error);
errors = true;
}
}
// field name: empleado.fechaNacim
// validator name: date
if (form.elements['empleado.fechaNacim']) {
field = form.elements['empleado.fechaNacim'];
var error = "La fecha de nacimiento debe ser mayor a 01/01/10";
var fieldValue = getFieldValue(field);
}
// field name: empleado.email
// validator name: email
if (form.elements['empleado.email']) {
field = form.elements['empleado.email'];
var error = "El e-mail es inválido";
var fieldValue = getFieldValue(field);
if (continueValidation && fieldValue != null && fieldValue.length > 0 && fieldValue.match("\\b^[\'_a-z0-9-\\+]+(\\.[\'_a-z0-9-\\+]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)*\\.([a-z]{2,6})$\\b")==null) {
addError(field, error);
errors = true;
}
}
// field name: empleado.posicion.posicionId
// validator name: required
if (form.elements['empleado.posicion.posicionId']) {
field = form.elements['empleado.posicion.posicionId'];
var error = "La posición es requerida";
var fieldValue = getFieldValue(field);
if (fieldValue == "") {
addError(field, error);
errors = true;
}
}
// field name: empleado.posicion.posicionId
// validator name: regex
if (form.elements['empleado.posicion.posicionId']) {
field = form.elements['empleado.posicion.posicionId'];
var error = "La posición es inválida";
var fieldValue = getFieldValue(field);
if (continueValidation && fieldValue != null && !fieldValue.match("^[1-9]\\d*$")) {
addError(field, error);
errors = true;
}
}
return !errors;
}
</script>