gpt4 book ai didi

java - Wicket 如何向 AjaxEditableLabel 添加双输入验证

转载 作者:行者123 更新时间:2023-12-02 07:05:32 25 4
gpt4 key购买 nike

使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com