Struts2 无法使用Struts 2 jquery图表插件3.4.0在json图形中绘制日期值

Struts2 无法使用Struts 2 jquery图表插件3.4.0在json图形中绘制日期值,struts2,charts,struts2-jquery,struts2-json-plugin,Struts2,Charts,Struts2 Jquery,Struts2 Json Plugin,我正在使用Struts2 jquery图表插件3.4.0。当我使用json从Action类中获取日期值时,我得到的是空白图表。如果我使用简单的Action,那么同样的代码也可以工作。 这是我的jsp代码 <s:url id="chartDataUrl" action="jsonChartData"/> <sjc:chart id="chartDate" xaxisMode="time" xaxisTimeformat

我正在使用Struts2 jquery图表插件3.4.0。当我使用json从Action类中获取日期值时,我得到的是空白图表。如果我使用简单的Action,那么同样的代码也可以工作。 这是我的jsp代码

   <s:url id="chartDataUrl" action="jsonChartData"/>
    <sjc:chart
        id="chartDate"
        xaxisMode="time"
        xaxisTimeformat="%m.%Y"
        xaxisMin="%{minTime}"
        xaxisMax="%{maxTime}"
        xaxisColor="#666"
        xaxisTickSize="[3, 'month']"
        xaxisTickColor="#aaa"
        xaxisPosition="top"
        yaxisPosition="right"
        yaxisTickSize="10"
        cssStyle="width: 600px; height: 400px;"
        >
        <sjc:chartData
            id="chartAjaxData1"
            label="Map -Double, Double-"
            href="%{chartDataUrl}"  // when i remove json call then it works fine
            list="dateFromMap"
            reloadTopics="reloadMap"
            lines="{show : true}"
            />
    </sjc:chart>

struts.xml代码

   <action name="jsonChartData"  
           class="com.ebhasin.fitnessbliss.actions.GraphsAction">
        <result   type="json" name="success"></result>
    </action>

动作类别代码:

public class GraphsAction extends ActionSupport {

    private String currentDate;
    private Map<Date, Float> dateFromMap;
    HomeService homeService = new HomeService();
    SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");

    @Override
    public String execute() {
        System.out.println("execute");
        float weight;
        Date date = new Date();
        Map session = ActionContext.getContext().getSession();
        Integer loginId = (Integer) session.get("loginId");
        if (loginId != null) {
            dateFromMap = new TreeMap<Date, Float>();
            List list = homeService.getWeightGraphData(loginId);
            if (list.size() > 0) {
                Iterator itr = list.iterator();
                while (itr.hasNext()) {
                    UserStats userStats = (UserStats) itr.next();
                    weight = userStats.getWeight();
                    date = userStats.getCreatedDate();
                    //currentDate = formatter.format(date);
                    dateFromMap.put(date, weight);
                }
            } else {
                // dateFromMap.put("my",2F );
            }
        } else {
        }
        return SUCCESS;
    }

    public String getCurrentDate() {
        return currentDate;
    }

    public void setCurrentDate(String currentDate) {
        this.currentDate = currentDate;
    }


    public Map<Date, Float> getDateFromMap() {
        return dateFromMap;
    }

    public void setDateFromMap(Map<Date, Float> dateFromMap) {
        this.dateFromMap = dateFromMap;
    }
}
公共类图Action扩展了ActionSupport{
私有字符串currentDate;
私有地图dateFromMap;
HomeService HomeService=新的HomeService();
SimpleDataFormat格式化程序=新的SimpleDataFormat(“dd-MM-yyyy”);
@凌驾
公共字符串execute(){
System.out.println(“执行”);
浮重;
日期=新日期();
映射会话=ActionContext.getContext().getSession();
整数loginId=(整数)session.get(“loginId”);
如果(loginId!=null){
dateFromMap=新树映射();
List=homeService.getWeightGraphData(loginId);
如果(list.size()>0){
迭代器itr=list.Iterator();
while(itr.hasNext()){
UserStats UserStats=(UserStats)itr.next();
weight=userStats.getWeight();
date=userStats.getCreatedDate();
//currentDate=formatter.format(日期);
dateFromMap.put(日期、重量);
}
}否则{
//dateFromMap.put(“my”,2F);
}
}否则{
}
回归成功;
}
公共字符串getCurrentDate(){
返回当前日期;
}
公共无效setCurrentDate(字符串currentDate){
this.currentDate=currentDate;
}
公共地图getDateFromMap(){
返回日期从地图;
}
公共void setDateFromMap(映射日期FromMap){
this.dateFromMap=dateFromMap;
}
}
编辑: 请放一个System.out.println(“某物”);在每个if/else块上,查看您经过的确切位置

需要注意的是,要实现SessionAware,而不是使用ActionContext


您的JSON操作是否如下所示:

(转到右下角选项卡中的
更多小部件->图表->JSON操作

@ParentPackage(value = "showcase")
public class JsonChartData extends ActionSupport {

  private static final long   serialVersionUID = 6659512910595305843L;
  private List<ListValue>     objList;
  private Map<Double, Double> doubleMap;

  @Actions( {
    @Action(value = "/json-chart-data", results = {
      @Result(name = "success", type = "json")
    })
  })
  public String execute()
  {

    objList = new ArrayList<ListValue>();
    doubleMap = new TreeMap<Double, Double>();

    Random generator = new Random();
    for (int i = 1; i <= 24; i++)
    {
      doubleMap.put(Double.valueOf("" + i), generator.nextDouble() * 10.0);
    }

    for (int i = 1; i <= 24; i++)
    {
      objList.add(new ListValue("" + i, "" + generator.nextInt(30)));
    }

    return SUCCESS;
  }

  public String getJSON()
  {
    return execute();
  }

  public List<ListValue> getObjList()
  {
    return objList;
  }

  public void setObjList(List<ListValue> objList)
  {
    this.objList = objList;
  }

  public Map<Double, Double> getDoubleMap()
  {
    return doubleMap;
  }

  public void setDoubleMap(Map<Double, Double> doubleMap)
  {
    this.doubleMap = doubleMap;
  }
}
@ParentPackage(value=“showcase”)
公共类JsonChartData扩展了ActionSupport{
私有静态最终长serialVersionUID=6659512910595305843L;
私有列表对象列表;
私人地图;
@行动({
@操作(value=“/json图表数据”,结果={
@结果(name=“success”,type=“json”)
})
})
公共字符串execute()
{
objList=newarraylist();
doubleMap=新树映射();
随机生成器=新随机();

对于(inti=1;感谢您的回复,我也这么做了,在这个AJAx()示例中)他们在两个轴上都使用了双值,我想要y轴上的日期,为此我使用了与showcase中的日期值相同的示例图表。但我没有得到图表。你能发布你的JSON操作吗?我在上面发布了我的Struts.xml和操作类代码。请检查它。再次感谢你的回复,如果我调用简单操作,那么同样的代码对我有效对我来说是个好消息,但它不起作用