我无法在Google Chrome中使用Primefaces Chart。我想根据特定日期(X轴)显示一系列值(Y轴)。不幸的是,日期(X轴)的值未在Google Chrome浏览器中正确显示(Firefox和Internet Explorer运行良好)。
下面是一个演示此问题的小例子。
xhtml:
<p:chart type="line" model="#{chartViewController.chartData}" style="height: 300px"/>
ChartViewController.java
@Named
@ViewScoped
public class ChartViewController implements Serializable {
public LineChartModel getChartData() {
LineChartModel lineChartModel = new LineChartModel();
LineChartSeries dataSeries = new LineChartSeries();
SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
dataSeries.setLabel("Data");
Calendar cal = Calendar.getInstance();
cal.add(Calendar.HOUR, -200*24);
for (int i = 0; i < 200; i++) {
dataSeries.set(sdf.format(cal.getTime()), i);
cal.add(Calendar.HOUR, 24);
}
/* Add values for y axis */
lineChartModel.setLegendPosition("ne");
lineChartModel.getAxis(AxisType.Y).setLabel("Values");
lineChartModel.addSeries(dataSeries);
DateAxis axis = new DateAxis("Datum");
axis.setTickAngle(-50);
axis.setMax(sdf.format(new Date()));
axis.setTickInterval("3 weeks");
axis.setTickFormat("%d.%m.%y");
lineChartModel.getAxes().put(AxisType.X, axis);
lineChartModel.setZoom(true);
return lineChartModel;
}
}
在Internet Explorer中,我看到了预期的结果:
但是,在Google Chrome中显示相同的图表会显示以下图片:
我也检查了我在Chrome中的语言环境设置,但到目前为止,它们看起来不错。
使用的版本:
如果有人知道为什么会发生以及如何解决它,我将非常有帮助。首先,我想到了一些时区/地区问题,但目前我完全没有目标。
谢谢您的协助!
更新
在删除tickInterval时,我在Google Chrome浏览器中得到以下图片:
Google Chrome result without tickInterval
好像日期是用美国格式而不是德语语言环境解释的(03.09.2019 vs.09.03.2019)
更新 好的,看来现在可以使用了。
我从Date()对象将X轴的值更改为长值,现在Google Chrome和Internet Explorer显示了相同的值:
dataSeries.set(sdf.format(cal.getTime()), i);
...
axis.setMax(sdf.format(new Date()));
到
dataSeries.set(cal.getTime().getTime(), i);
...
axis.setMax((new Date()).getTime());
谢谢大家的投入!