我正在试验 HTML5。我想知道的是 Wicket 如何处理 HTML5 输入类型,例如日期和电子邮件,如果有的话?目前,Wicket 使用 java 脚本为日期输入生成日历。
使这个问题复杂化的是 Wicket 如何处理不支持日期类型的 HTML5 输入标签(以及其他新的 HTML5 标签)的浏览器。
我正在试验 HTML5。我想知道的是 Wicket 如何处理 HTML5 输入类型,例如日期和电子邮件,如果有的话?目前,Wicket 使用 java 脚本为日期输入生成日历。
使这个问题复杂化的是 Wicket 如何处理不支持日期类型的 HTML5 输入标签(以及其他新的 HTML5 标签)的浏览器。
Wicket(1.5 及更高版本)不支持 input type='date' 或开箱即用的类似构造。Wicket Extensions 中有一个DateTextField
,但它没有指定type='date'
(还)。我建议创建您自己的实现来正确设置类型属性(我猜测为什么它们没有被添加到该字段是它会破坏现有的应用程序)。
有EmailTextField、NumberTextField等。_ 这些添加类型属性并验证服务器上的输入。
不支持 HTML5 输入的浏览器回退到type='text'
,因此从 Wicket 的角度来看没有什么不同。Wicket 仍将根据设置的规则验证输入。
您只需要覆盖方法 TextField# getInputType()并返回“ date ”,这样您就可以跳过 TextField 组件中对 onComponentTag 方法的验证。例如,如果您不想创建自己的组件,可以使用这样的匿名类:
DateTextField dob = new DateTextField("dob", dobModel){
private static final long serialVersionUID = 1L;
/* (non-Javadoc)
* @see org.apache.wicket.markup.html.form.TextField#getInputType()
*/
@Override
protected String getInputType()
{
return "date";
}
};