2015-04-14 2 views
1

Я новичок на Struts2 и сожалею о своем бедном английском, поскольку это не мой родной язык.Как проверить корректность поля с помощью проверки Struts 2?

Пусть форма имеет 1 множественное поле выбора и 3 текстовых поля:

Несколько Выберите поле: Имя: sb01, Функции: [value, label]: [1, Type1], [2, Type2], [3, Type3]

<s:select name="sb01" multiple="multiple" list="#{1:'Type1', 2:'Type2',3:'Type3'}"></s:select> 

3 текстовых поля: (TextField1, TextField2, TextField3)

<s:textfield name="TextField1" /> 
<s:textfield name="TextField2" /> 
<s:textfield name="TextField3" /> 

Если выбрано Type1, пользователю необходимо ввести TextField1.

Если выбрано Type2, то пользователю необходимо ввести TextField2.

Если выбрано Type3, пользователю необходимо ввести TextField3.

Если выбрано Type1,2,3, пользователю необходимо ввести все текстовые поля. и так далее.

Как можно условно проверить текстовые поля? Я хотел бы сделать это с помощью xml или аннотации вместо написания метода validate() в классе action, потому что код будет слишком длинным для чтения и сохранения при росте полей.

Я сделал что-то вроде ниже, но логика неверна, так как по-прежнему требуются все три варианта.

@FieldExpressionValidator(expression = "sb01.contain(1)", message="") 
@RequiredStringValidator(message = "please fill in Textfield1.") 
public String getTextField1(){ return TextField1; } 

@FieldExpressionValidator(expression = "sb01.contain(2)", message="") 
@RequiredStringValidator(message = "please fill in Textfield2.") 
public String getTextField2(){ return TextField2; } 

@FieldExpressionValidator(expression = "sb01.contain(3)", message="") 
@RequiredStringValidator(message = "please fill in Textfield3.") 
public String getTextField3(){ return TextField3; } 

ответ

0

Вы не должны использовать полевые валидаторы, так как в поле, аннотированном с ним, применяется полевой валидатор. И если у вас есть три поляризатора поля, все они применяются к каждому полю во время процесса проверки. Вместо этого вы можете использовать один не-полевой валидатор, который проверял все три поля одновременно. Динамически настраивая требуемое поле, он не сообщает строкам или не настраивает их для перенастройки валидаторов. Ни один из них на самом деле не должен быть отмечен как требуется, потому что вы можете удалить отметку каждого из них.

Смежные вопросы