Вы не можете. Java не разрешает общие типы для констант перечисления. Они разрешены для типов перечислений, хотя:
public enum B implements A<String> {
A1, A2;
}
. Что вы могли бы сделать в этом случае, либо иметь тип перечисления для каждого родового типа, либо «поддельный» с перечислением, просто сделав его классом :
public class B<T> implements A<T> {
public static final B<String> A1 = new B<String>();
public static final B<Integer> A2 = new B<Integer>();
private B() {};
}
К сожалению, оба они имеют недостатки.
Чтобы использовать настраиваемый валидатор, вам также понадобится валидатор requiredfield для того же элемента управления. Просто установите requiredfieldvalidator для NoteDateTextBox, и он должен запускать для вас событие сервера customvalidator.
Чтобы добавить к ответу Дэна, альтернативный способ использования CustomValidator
:
ControlToValidate
OnServerValidate
укажите ссылку на проверяемый элемент управления вместо использования ServerValidateEventArgs.Value
, например <asp:ValidationSummary runat="server" DisplayMode="BulletList" ValidationGroup="form" />
<asp:TextBox runat="server" ID="_textbox"/>
<asp:CustomValidator runat="server"
ErrorMessage="Please enter the secret"
OnServerValidate="TextBoxValidate"
ValidationGroup="form"
Display="None"
EnableClientScript="false" />
<asp:button runat="server" OnClick="ButtonClick" Text="Press" />
protected void ButtonClick(object sender, EventArgs e)
{
Page.Validate();
if (Page.IsValid)
{
// Do something
}
}
protected void TextBoxValidate(object sender, ServerValidateEventArgs args)
{
args.IsValid = _textbox.Text == "secret";
}
Когда вы проверяете, пусто ли текстовое поле, используйте этот ValidateEmptyText = "true" в CustomValidator.
В противном случае проверка обязательного поля не будет работать.