gwt - 如何将 ValueChangeHandler 添加到自定义 DateBox?
问题描述
我想将值更改处理程序的功能添加到扩展 DateBox 的自定义类中。我已经添加了键处理程序,但我还想将值更改处理程序实现到同一个类。
当我从 DatePicker 或键盘获取输入时,我希望我的 DateBox 能够正常工作。
任何其他建议也会有所帮助。
public class ValidationDateBoxInternal extends DateBox implements KeyUpHandler{
private List<String> regexList;
public ValidationDateBoxInternal(){
super();
this.getTextBox().addKeyUpHandler(this);
regexList = new ArrayList<String>();
}
public void setAsNotEmpty() {
regexList.add(DateValidation.isNotEmpty);
isValid();
}
public void setAsValidDate(){
regexList.add(DateValidation.isValidDate);
isValid();
}
public void onKeyUp(KeyUpEvent event) {
isValid();
}
public void setText(String text) {
super.getTextBox().setText(text);
isValid();
}
public void clearRegexList() {
regexList.clear();
}
public String getText() {
if (regexList.size() == 0) {
return super.getTextBox().getText();
}
if (isValid()) {
for (String regex: regexList) {
if (regex.equals(DateValidation.isValidDate)) {
return super.getTextBox().getText().toLowerCase().trim();
}
}
return super.getTextBox().getText().trim();
}
else {
return null;
}
}
public boolean isValid() {
for (String regex: regexList) {
if (!DateValidation.isValid(super.getTextBox().getText(), regex)) {
this.addStyleName("invalid");
return false;
}
}
this.removeStyleName("invalid");
return true;
}
}
解决方案
您的类 extends DateBox
,它实现了HasValueChangeHandlers
接口。所以你可以打电话:
DateBox.addValueChangeHandler(ValueChangeHandler<java.util.Date> handler)
例如:
public class MyDateBox extends DateBox implements ValueChangeHandler<Date> {
void foo() {
addValueChangeHandler(this);
}
void onValueChange(ValueChangeEvent<Date> event) {
// validate the value of the DateBox
}
}
推荐阅读
- machine-learning - 将 Keras 代码转换为 PyTorch 代码(整形)的问题
- python - 查询 cassandra 对象映射器
- objective-c - 在 iOS 12.2 及更高版本的 CoreData 中崩溃 NSManagedObjectContext
- regex - 任意位置的 Perl 可选组
- sql - 以特定格式查询 2 个日期之间的结果
- php - 如何从浏览器执行 php shell 命令?
- apache-kafka - 如何从 KTable 中获取已排序的 KeyValueStore?
- c# - 使用 ODataQueryOptions 时无法应用 $select
- python - 如何在python中将一个矩阵分成两个矩阵?
- azure-devops - 如何更改 PR 合并提交消息?