Struts2 无法使用Struts 2 jquery图表插件3.4.0在json图形中绘制日期值
我正在使用Struts2 jquery图表插件3.4.0。当我使用json从Action类中获取日期值时,我得到的是空白图表。如果我使用简单的Action,那么同样的代码也可以工作。 这是我的jsp代码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
<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和操作类代码。请检查它。再次感谢你的回复,如果我调用简单操作,那么同样的代码对我有效对我来说是个好消息,但它不起作用