如何从返回字符串的spring mvc Requestmapping方法调用请求体方法

时间:2013-10-31 20:08:26

标签: android json rest spring-mvc

我有一个名为Loginsuccesspage的方法的控制器类。此方法用于下载文件并将一些用户详细信息插入数据库。然后它返回到自己的loginsuccess页面(这是一个JSP)。现在我试图以这样的方式重构代码,它需要下载并返回到JSP Loginsuccess页面,并且还应该在指定的URL(machineip:portno / target)中以JSON格式构造用户详细信息。将从我的Android应用程序访问此URL以检索用户详细信息。我附加了LoginsuccessPage方法,该方法执行下载逻辑& getUserDetails方法,返回JSON对象。这种方法不起作用。有没有其他方法可以实现这一点。

@RequestMapping(value = "/loginsuccess", method = RequestMethod.GET)
public String loginSuccessPage(ModelMap model, HttpServletRequest request, HttpServletResponse response) {


    if (username != null) {

        model.addAttribute("message1", username);


    } else {
        model.addAttribute("message1", deleteUserName);
    }
    HashMap<String, String> appList = new HashMap<String, String>();

    List list = this.loginService.findAppPrice();


    for (int i = 0; i < list.size(); i++) {
        Price price = (Price) list.get(i);
        appList.put(price.getApp_name(), price.getApp_price().toString());
    }
    model.addAttribute("appList", appList);

    try {

        if (filename != null) {

            String appName=filename.substring(0,filename.length()-4);
            Double price = appstoreBillingService.appStoreBilling(appName);
            Appstorebilling appstorebilling = new Appstorebilling();
            appstorebilling.setUname(username);
            appstorebilling.setApp_name(appName);
            appstorebilling.setApp_price(price);
            appstorebilling.setTime_stamp(new Timestamp(new Date().getTime()));
            String downloadSize = this.paymentService.downloadFile(request, response, filename);
            appstorebilling.setDownload_size(downloadSize);
            appstoreBillingService.insertBillingInfo(appstorebilling);
            getUserDetails(appstorebilling); //Method which i am invoking to GET JSON object 

        }
    } catch (IOException e) {
        e.printStackTrace();
    }
    return "loginsuccess";

}

我正在调用GET JSON对象的方法

@RequestMapping(value = "/target",method = RequestMethod.GET)
public @ResponseBody Object getUserDetails(Appstorebilling appstorebilling) throws NoSuchAlgorithmException {

     return appstorebilling;

}

当我尝试访问url(machineip:portno / target)时,我在JSON对象中获取空值 { “ID”:0, “UNAME”:NULL, “APP_NAME”:NULL, “app_price”:NULL, “TIME_STAMP”:NULL, “DOWNLOAD_SIZE”:空}

1 个答案:

答案 0 :(得分:1)

Samba,尝试改变你的逻辑。

服务器设置

  

假设:F =您要下载的文件,J =包含该文件信息的JSON文件。

  1. 让两个控制器(或地方)返回J,另一个通过带参数的客户请求返回F.

  2. 将F的位置信息放入J.

  3. 客户程序

    1. 先获得J。

    2. 从J抓取F的位置信息,并拨打F的位置下载F.

    3. 如果有任何实施问题,请告诉我。