【问题标题】:Used trinidad chart tag <tr:chart> in XHTML, but no output is coming在 XHTML 中使用了 trinidad 图表标签 <tr:chart>,但没有输出
【发布时间】:2023-12-25 07:11:01
【问题描述】:

下面是我面临问题的代码,我没有得到图表的输出。 请帮助我。

我的 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;

    }

}

【问题讨论】:

    标签: jsf xhtml tags charts trinidad


    【解决方案1】:

    在模板中&lt;h:body&gt; 之前必须有一个&lt;h:head&gt;。这就是所有 JSF 2.x 脚本和样式表的结尾。如果 &lt;tr:chart&gt; 有一些 JS/CSS 依赖项,我不会感到惊讶。

    【讨论】:

    • 我试图在我的 jsp 中添加 元素,但我收到以下错误:在使用前缀“h”导入的标签库中没有定义标签“head”
    • 那么您没有使用 JSF 2.0,您可能需要手动导入样式。有关详细信息,请阅读特立尼达文档。
    【解决方案2】:

    我无法在 xhtml 文件中获取图形,所以我将其复制到 jsp 中并获取了图形。

    【讨论】:

      【解决方案3】:

      我有一个类似的问题,并通过在 web.xml 中添加以下行来解决它:

      <mime-mapping>
         <extension>svg</extension>
         <mime-type>image/svg+xml</mime-type>
      </mime-mapping>
      

      【讨论】: