【发布时间】:2016-10-11 08:52:54
【问题描述】:
我目前正在开发一个使用 JSF 2.2、Bootsfaces 0.8.6 和 Primefaces 5.3 的项目。在注册页面上工作时,我提到了使用 type="date" 时 Bootsfaces 的显示和行为问题。
通常,输入元素有一种占位符,用于显示日期的格式以及元素右端的一些选择元素。在 Chrome 和 Microsoft Edge 上一切正常,但是在使用 IE11 和 Firefox 47.0 的情况下,输入显示为标准文本输入,没有选择元素和格式提示。它看起来与试图解释不支持它的 HTML5 的旧浏览器完全一样。
所以我也在移动设备上使用 Chrome 和 Firefox 进行了尝试,并且没有任何问题。总之,我列出了哪些浏览器可以使用 input 元素,哪些不能:
浏览器(工作)
- 谷歌浏览器 (51.0.2704.84 m)
- Android 上的谷歌浏览器 (51.0.2704.81)
- Android 上的 Mozilla Firefox (47.0)
- 微软边缘 (25.10586.0.0)
- Safari(无版本,朋友测试)
浏览器(不工作)
- Mozilla Firefox (47.0)
- Internet Explorer (11.306.10586.0)
- Android 浏览器(不知道具体版本)
为了防止出现一些明显的错误,我尽量使以下示例保持简短和简单。它显示了一个测试我所说的示例。
index.xhtml
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:b="http://bootsfaces.net/ui"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui">
<h:head>
<meta charset="UTF-8"/>
</h:head>
<h:body>
<h:form id="form">
<b:row style="margin: 1em;">
<b:column span="4">
<b:inputText id="dateInput" type="date" value="#{test.date}" immediate="true"/>
</b:column>
</b:row>
</h:form>
</h:body>
</html>
TestBean.java(处理输入的Bean)
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
@ManagedBean(name = "test")
@ViewScoped
public class TestBean {
private String date;
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
System.out.println(date);
}
}
我最后的问题是:
- 是什么导致了这个格式错误的输入元素?
- 有什么解决方案可以让它在 IE11 和 Firefox 47.0 for PC 上运行?
【问题讨论】:
-
在 Firefox 中,一些 HTML5 输入不起作用。我遇到了数字字段的问题 - Firefox 将其视为普通输入,与 Chrome 不同,它只允许数字。
-
所以这是 Firefox 的错误?
-
我在 SO 中读到了一个问题,说明这是一个已取消的功能 - 无论是在标准还是 Firefox 中。如果我找到它,我会发布它。
标签: jsf firefox internet-explorer-11 android-browser bootsfaces