Struts 2客户端验证仅在`devMode = true`时有效

时间:2017-09-11 14:30:50

标签: struts2

我尝试使用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=falsereloadXmlConfiguration=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>

0 个答案:

没有答案