0

我想在检票口字段验证中包括重新格式化字段内容。

时间输入字段示例:

用户输入:1459 -> 验证正常 -> 字段显示重新格式化的值:14:59(中间有冒号)

谢谢你的帮助,

乌里

public class PhoneValidatorWrapper implements IValidator<String>, Serializable
{

    public PhoneValidatorWrapper()
    {
    }

    @Override
    public void validate(IValidatable<String> validatable)
    {
        // validation goes here ...
            // writing pretty print back to model
            validatable.getModel().setObject("hello world");            
    }
}

但显示的值仍然保持不变

4

2 回答 2

0

我终于找到了方法:它通过结合验证器和行为来工作:

public class PhoneValidatorWrapper extends Behavior implements IValidator<String>, Serializable
{
    String prettyFormattedValue = null;

    public PhoneValidatorWrapper()
    {
    }

    @Override
    public void validate(IValidatable<String> validatable)
    {
        // validation goes here ...
        prettyFormattedValue = internalValidationResult.getPrettyValue();
    }

    @Override
    public void beforeRender(Component component)
    {
        super.beforeRender(component);
        IModel defaultModel = component.getDefaultModel();
        defaultModel.setObject(prettyFormattedValue);
    }
}
于 2013-06-12T20:45:37.457 回答
0

我建议使用 javascript 在客户端重新格式化用户输入。以下 jQuery 插件可能可以完成这项工作:

http://digitalbush.com/projects/masked-input-plugin/#demo

另请参阅: 如何让用户在检票口中输入格式化的日期?

于 2013-06-12T19:35:41.117 回答