日期:2014-05-16  浏览次数:20393 次

二次调用action,使用json解析设备返回的数据
web服务器与某台设备通信,web服务器向设备发出http请求,设备返回文本数据,把返回的数据封装进ActionContext中,使用chain二次调用action

返回数据的格式(实际没有回车换行):
deviceName=device01
--separator--waveDataList[0].channelNo=1
--separator--waveDataList[0].channelData = "1111111,2222222,3333333,4444444"
--separator--waveDataList[1].channelNo="2"
--separator--waveDataList[1].channelData = "1111111,2222222,3333333,4444444"
--separator--waveDataList[2].channelNo="3"
--separator--waveDataList[2].channelData = "1111111,2222222,3333333,4444444"


1.向设备发送请求
2.设备返回数据
/** Action1*/

// 这里定义的和设备返回的数据必须对应
private String deviceName;
private List<DyWave> waveDataList;

// 请求设备,并且接收设备返回的字符串
String receiveString = RemoteDeviceUtil.getRemoteDyWave(deviceInfo.getDiip(), deviceInfo.getDinetPort());

//分割数据
String[] array = receiveString.split(Const_val.C_STR_WAVE_DATA_SEPARATOR);

// 把数据放进ActionContext
if (null != array) {

	ActionContext ctx = ActionContext.getContext();
	
	Map<String, Object> map1 = new HashMap<String, Object>();
	
	for (String string : array) {
		
		String[] arr = string.split(Const_val.C_STR_EQ_SEPARATOR);
		
		map1.put(arr[0], arr[1]);
		
	}
	ctx.setParameters(map1);
}
...
...

/** Action2*/
JSONArray jsonData = JSONArray.fromObject(waveDataList);
if (null != jsonData) {
	// 这个json变量用于js画图
	this.jsonData = jsonData.toString();
} else {
	this.jsonData = "";
}
...
...


3.用于画图的jsp
$(document).ready(function(){
	var jsonData = '<s:property value='jsonData' escape='false'/>';

	var obj = eval("(" + jsonData + ")");
	
	$.each(obj, function(idx,item){ 
		drawChart1(item.channelNo,"", item.channelData, "","","",item.channelNo);
	});
	
});


4.struts配置
<action name="getDyWaveData" class="UserDyWaveAction" method="getDyWaveData">
	<result type="chain" name="success">getWarpDyWaveData</result>
</action>

<action name="getWarpDyWaveData" class="UserDyWaveAction" method="getWarpDyWaveData">
	<result name="success">/JSP/user/UserMonitorDyWave.jsp</result>
</action>


在ajax中如果只想获得json对象,可以返回一个如下的jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"	pageEncoding="GBK"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<s:property value='jsonData' escape='false'/>