作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 ajaxEditableLabel 时,我在为 Wicket 口中的 double 添加输入验证时遇到问题。
这是我的代码:(项目是 ListView 中的列表项目)
item.add(new AjaxEditableLabel("myDouble", new Model(myObject.getMyDouble())) {
@Override
protected void onSubmit(AjaxRequestTarget target) {
super.onSubmit(target);
myObject.setMyDouble(new Double(getEditor().getInput())); //here it fails to read the input when a use enters a wrong number
//Do something when it's a double
}
});
如何向此组件添加 validator 以检查这是否为 double 值?
目前我正在使用:
Double.parseDouble(myval);
通过 try catch ...但这也需要更改输入字符串,因为 , 和 。
应该有一种 Wicket 口的方式来验证此输入吗?
编辑**:也许我必须将 NumericTextField 添加到此组件,但我不明白如何添加。
最佳答案
检查一下:
Java:
public class MyPage extends WebPage {
private List<Double> list = Arrays.asList(2013.0, 100.500);
public MyPage() {
final FeedbackPanel feedback = new FeedbackPanel("feedback");
feedback.setOutputMarkupId(true);
add(feedback);
ListView<Double> items = new ListView<Double>("items", new PropertyModel(this, "list")) {
@Override
protected void populateItem(ListItem<Double> item) {
item.add(new AjaxEditableLabel("item", item.getModel()) {
@Override
protected void onSubmit(AjaxRequestTarget target) {
System.out.println(Arrays.toString(list.toArray()));
target.add(feedback);
super.onSubmit(target);
}
@Override
protected void onError(AjaxRequestTarget target) {
target.add(feedback);
super.onError(target);
}
}.add(new IValidator<Object>() {
@Override
public void validate(IValidatable<Object> validatable) {
String in = String.valueOf(validatable.getValue());
try {
Double.parseDouble(in.replace(".", ","));
} catch (Exception ignore) {
try{
Double.parseDouble(in.replace(",", "."));
}catch (Exception e){
ValidationError error = new ValidationError(String.format("`%s` is not a Double", in));
validatable.error(error);
}
}
}
}));
}
};
add(items);
}
}
标记:
<div wicket:id="feedback"/>
<ul wicket:id="items">
<li wicket:id="item"></li>
</ul>
<小时/>
上面的 validator 只是为了演示,在实际代码中我建议创建一个单独的类(而不是匿名类)。
关于java - Wicket 如何向 AjaxEditableLabel 添加双输入验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16167420/
我是一名优秀的程序员,十分优秀!