1

抱歉,如果这是重复的,但我找不到任何具体的例子。

我在springmvc中有以下控制器。

import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

/**
 * Handles requests for the application home page.
 */
@Controller
public class HomeController {

    private static final Logger logger = LoggerFactory.getLogger(HomeController.class);

    /**
     * Simply selects the home view to render by returning its name.
     */
    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String home(Locale locale, Model model) {
        logger.info("Welcome home! the client locale is "+ locale.toString());

        Date date = new Date();
        DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);

        String formattedDate = dateFormat.format(date);

        model.addAttribute("serverTime", formattedDate );

        return "main";
    }

}

这意味着我可以访问 ${serverTime},我的问题是,有没有一种方法可以让这个响应成为 JSON 响应,而不必在这个控制器中硬编码所有 JSON 转换代码。有没有办法我可以将一些 XML 放入配置中,这样它就会知道将响应转换为说...

{ "serverTime" : "12 12 2012" } (忽略这张脸,这可能不是正确的日期格式)

我应该提一下,“main”是视图的名称(main.jsp),所以我想让它以同样的方式工作。

4

2 回答 2

1

用 注释您的方法@ResponseBody

然后只需退回您的物品,formattedDate

    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String home(Locale locale, Model model) {
        logger.info("Welcome home! the client locale is "+ locale.toString());

        Date date = new Date();
        DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);

        String formattedDate = dateFormat.format(date);

        model.addAttribute("serverTime", formattedDate );

        return "main";
    }

    @RequestMapping(value = "/serverTime", method = RequestMethod.GET)
    @ResponseBody
    public String serverTime(Locale locale, Model model) {
        Date date = new Date();
        DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);

        return dateFormat.format(date);
    }
于 2012-04-17T16:39:47.603 回答
0

有一个库用于将 Java 对象转换为 JSON,称为 gson:

http://code.google.com/p/google-gson/

顺便说一句,如果您想发送 Ajax 响应而不是刷新页面,请将 @ResponseBody 添加到您的方法声明中:

public @ResponseBody String home(Locale locale, Model model) { .. }

并返回您的 JSON 字符串(假设在这种情况下您没有更新模型)。

于 2012-04-17T16:39:34.753 回答