0

私は次のことを達成しようとしています:

コンボボックスで始まるフォームがあります。ユーザーが「学生」または「教師」のいずれかを選択する必要があるとしましょう。

「学生」と「教師」の両方で同じフィールドがフォームに表示されますが、「教師」がチェックされている場合は、より多くのフィールドが表示されます (最初は非表示で、ユーザーが選択すると jQuery で表示されます)。 "先生")。

問題は、「教師」が選択されている場合にのみ、これらのフィールドを必須にしたいということです。

それを管理する方法がわかりません。次のような注釈を使用してそれが可能になるとは思いません。

@NotBlank
private String teacherCourse;

ユーザーが「学生」ラジオボタンを選択した場合、このフィールドは常に空白になるためです。

何か案が?カスタム検証方法を実行できますか? またその方法は?

4

3 に答える 3

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 に答える
0

検証グループを使用して、両方のエンティティに適用される制約と、それらの 1 つだけに適用される制約を区別できます。

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

私は過去にこれについて2つのアプローチを取りました。

送信の列挙型フィールドを使用して、実行する検証の種類を決定します。これは柔軟で、任意の数のカスタム検証方法を使用できます。

別の方法は、生徒と教師の両方のクラスが拡張する基本コマンド オブジェクトを使用することです。これにより、両方のタイプが検証とフィールドを拡張およびオーバーライドできます。これには、各タイプをバインドするために個別のメソッドを使用する必要があります。

于 2013-01-12T05:38:49.507 に答える