javaFX不同controller数据调用

手头上一个之前用javaFX开发的项目需要增加需求。需求主要为主窗口添加一个按钮,调用接口获得数据,将数据渲染到新的窗口列表中,新的窗口列表中点击导入按钮,将数据回显到主窗口。

之前开发的都是BS架构,可以通过将数据存储到cookie 或session,但在CS中无法实现。思考了下,在controller中定义静态变量,将调用接口获得的数据存储到静态变量中,以此在不通的controller中只要获取到静态变量,就可以取到所需数据。

public static Map<String, User> dataMap = new HashMap<String, User>();
public static Map<String, Object> planAnayData = new HashMap<String, Object>();

User user = new User();
user.setUserName(loginName);
user.setPassWord(passWord);
dataMap.put("user", user);

String loginUrl = "https://xxxxxx";
Map loginParam = new HashMap();
loginParam.put("loginName", loginName);
loginParam.put("password", passWord);
String data = HttpUtil.getData(loginUrl, loginParam);
Map loginMap = JsonPluginsUtil.jsonToMap(data);
Map loginData = JsonPluginsUtil.jsonToMap(loginMap.get("data").toString());
String token = (String) loginData.get("token");
// 获得token后放入变量中
planAnayData.put("token", token);

另一个controller调用:

 Map<String, Object> planAnayData = LoginController.planAnayData;// 调用上一个controller
 HttpPost httpPost = new HttpPost("https://xxxxx");
 JSONObject param = new JSONObject();
 Map page = new HashMap();
 page.put("pageNo", currentPage);
 page.put("pageSize", 15);
 param.put("page", page);
 // 获得存入的token值
 httpPost.setHeader("xxx", planAnayData.get("token").toString());

这样就能在不同的controller中调用接口获取到的数据,渲染到不同的窗口中了。

你可能感兴趣的:(javaFX)