java—是否可以使用struts2 jquery图表插件制作带有字符串x轴的条形图?

7cjasjjr  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(216)

我正在使用struts2-jquery-chart-plugin-3.2.1。我想显示一个由列表填充的条形图。
这是我的密码:
动作类:

public class FinancialChartAction extends ActionSupport{
    private List<FinChartModel> wholeChartModels;

    @SkipValidation
    @Action(value = "getFinancialChartData", results = {
        @Result(name = "success", type = "json", params = {
            "wholeChartModels"
        })}){
        wholeChartModels = new ArrayList<FinChartModel>();     
        wholeChartModels.add(new FinChartModel("2020/01/01", 1000));
        wholeChartModels.add(new FinChartModel("2020/01/02", 2000));
        wholeChartModels.add(new FinChartModel("2020/01/03", 3500));
        wholeChartModels.add(new FinChartModel("2020/01/04", 550));

}

    public List<FinChartModel> getWholeChartModels() {
        return wholeChartModels;
    }
}

型号等级:

private String registerDate;
    private Long sellValue;

    public String getRegisterDate() {
        return registerDate;
    }

    public void setRegisterDate(String registerDate) {
        this.registerDate = registerDate;
    }

    public Long getSellValue() {
        return sellValue;
    }

    public void setSellValue(Long sellValue) {
        this.sellValue = sellValue;
    }

    FinChartModel(String registerDate,Long sellValue){
        this.registerDate = registerDate;
        this.sellValue = sellValue;
    }

jsp地址:

<div id="gain_chart">
    <sjc:chart
        id="chartAjaxTwo"
        cssStyle="width: 600px; height: 400px;">
        <sjc:chartData
            dataType="json"
            id="chartAjaxTwoData2"
            label="List -ListValue-"
            href="%{getFinancialChartData}"
            list="wholeChartModels"
            listKey="registerDate"
            listValue="sellValue"
            bars="{show : true, barWidth: 0.7}"
            />
    </sjc:chart>
</div>

如你所见,我希望我的图表在x轴上显示字符串。通过这种配置,我在条形图上看不到任何数据。是否可以使用字符串作为条形图的x轴?如果是,我的代码有什么问题?

63lcw9qa

63lcw9qa1#

您无法在条形图上看到任何数据,因为您使用了错误的url将数据获取到 chartData 标签。在你的 chartData 标记您正在使用ajax获取的数据。因此,您应该引用以可接受格式返回数据的url。在您的例子中,您使用的是数据类型json。在action类中有这样的操作,它返回json类型的结果。类路径上应该有可用的json插件。为您可以使用的操作生成url

<s:url var="chartDataUrl" action="getFinancialChartData"/>

然后在 chartData 标签

href="%{#chartDataUrl}"

默认情况下,json结果返回 topValueStack 序列化为json对象,struts将操作示例放入其中。

@Result(name = "success", type = "json")

以及 list 属性绑定到具有相应getter的action类的变量。因为你用的是对象列表 listKey 以及 listValue 默认情况下,与具有getter的对象变量绑定。
注意struts2 jquery图表的版本也应该更新,以包括 Flot 插件用来绘制图表的库。有关更多详细信息,请参阅此答案。

相关问题