#jsf #xhtml #tags #charts #trinidad
#jsf #xhtml #Теги #Диаграммы #тринидад
Вопрос:
Ниже приведен код, в котором я сталкиваюсь с проблемой, я не получаю выходные данные графиков. Пожалуйста, помогите мне.
Мой код 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:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:tr="http://myfaces.apache.org/trinidad">
<h:body>
<h1>Director Screen</h1>
<tr:document>
<tr:form>
<tr:chart value="#{chartBean}" type="pie" />
<tr:chart value="#{chartBean}" type="bar" />
<tr:chart value="#{chartBean}" type="circularGauge">
</tr:form>
</tr:document>
</h:body>
</html>
Java-код
package com;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import org.apache.myfaces.trinidad.model.ChartModel;
@ManagedBean(name = "chartBean")
@SessionScoped
public class ChartBean extends ChartModel {
@Override
public List<String> getGroupLabels() {
List<String> groupLabels = new ArrayList<String>();
groupLabels.add("Java");
groupLabels.add("Linux");
groupLabels.add(".NET");
return groupLabels;
}
@Override
public List<String> getSeriesLabels() {
List<String> seriesLabels = new ArrayList<String>();
seriesLabels.add("Love it");
seriesLabels.add("Hate it");
return seriesLabels;
}
@Override
public List<List<Double>> getYValues() {
List<List<Double>> chartValues = new ArrayList<List<Double>>();
// Fill the groups
for (int i = 0; i < getGroupLabels().size(); i ) {
List<Double> numbers = new ArrayList<Double>();
// fill the series per group
for (int j = 0; j < getSeriesLabels().size(); j ) {
numbers.add(100* Math.random());
}
chartValues.add(numbers);
}
return chartValues;
}
}
Ответ №1:
Обязательно иметь <h:head>
в шаблоне прямо перед <h:body>
. На этом заканчиваются все скрипты JSF 2.x и таблицы стилей. Я не удивлюсь, если у <tr:chart>
есть некоторые зависимости от JS / CSS.
Комментарии:
1. Я попытался добавить элемент <h: head> в свой jsp, но я получаю следующую ошибку: В библиотеке тегов, импортированной с префиксом «h», не определен тег «head»
2. Тогда вы не используете JSF 2.0, и вам, вероятно, потребуется импортировать стили вручную. Подробнее читайте документацию Trinidad.
Ответ №2:
Мне не удалось получить график в файле xhtml, поэтому я скопировал его в jsp и получил график.
Ответ №3:
У меня была похожая проблема, и я решил ее, добавив следующие строки в web.xml:
<mime-mapping>
<extension>svg</extension>
<mime-type>image/svg xml</mime-type>
</mime-mapping>