0

我正在尝试完成以下任务:

我有一个以组合框开头的表单,假设用户必须选择“学生”或“教师”。

“学生”和“教师”都将在表单中显示相同的字段,但如果选中“教师”,我将显示更多字段(起初是隐藏的,当用户选择时我将使用 jQuery 显示“老师”)。

问题是我希望这些字段只有在选择“教师”时才是强制性的。

我不知道如何管理它,我认为使用以下注释是不可能的:

@NotBlank
private String teacherCourse;

因为当用户选择“学生”单选按钮时,该字段将始终为空白。

任何想法?我可以做一个自定义验证方法吗?如何做?

4

3 回答 3

0

您可以使用验证组来区分应用于两个实体的约束和仅应用于其中一个实体的约束:

public interface TeacherConstraints {}

@NotBlank(groups=TeacherConstraints.class)
private String teacherCourse;

验证对象时,根据组合框中选择的类型指定要验证的组:

//teacher
Set<ConstraintViolation<Object>> violations = validator.validate(object, TeacherConstraints.class);

//student
Set<ConstraintViolation<Object>> violations = validator.validate(object, Default.class);
于 2013-01-14T08:52:51.600 回答
0

过去我采取了两种方法。

使用提交上的枚举字段来确定要执行的验证类型。这是灵活的并且允许任意数量的自定义验证方法。

另一种方法是使用学生和教师类都扩展的基本命令对象。这允许这两种类型扩展和覆盖验证和字段。这要求使用单独的方法来绑定每种类型。

于 2013-01-12T05:38:49.507 回答
0

您可以使用 javascript 或 JQuery 进行前端验证...取决于您的组合框值。如果是老师或学生

function validate(){

 var combox_value = document.getElementbyID("combo_box").value;

     if(combox_value == "Teacher"){
     //Validate for Teacher fields
        var input_text1 = document.getElementbyID("input_text"2).value;
        if(input_text1=="" || input_text1==null){
        alert("Field cannot be empty");
        return false;
        }
        return true;
     }
     else if(combox_value == "Student"){
     //Validate for Student fields
        var input_text2 = document.getElementbyID("input_text2").value;
        if(input_text2=="" || input_text2==null){
        alert("Field cannot be empty");
        return false;
        }
        return true;
     }

}

对于 JQuery,请尝试这些链接以获取实时示例...
http://speckyboy.com/2009/12/17/10-useful-jquery-form-validation-techniques-and-tutorials-2/
http://www.jeasyui .com/tutorial/form/form3.php
http://www.camcloud.com/blog/jquery-form-validation-tutorial

于 2013-01-12T05:26:55.430 回答