道歉,如果这是重复但我找不到任何具体的例子。
我在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,以便知道将响应转换为say ...
{“serverTime”:“12 12 2012”}(忽略这可能不是正确的日期格式)
我应该提一下,“main”是视图的名称(main.jsp),所以我想保持同样的工作方式。
答案 0 :(得分: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);
}
答案 1 :(得分:0)
有一个用于将Java对象转换为JSON的库,名为gson:
http://code.google.com/p/google-gson/
顺便提一下,如果您想要发送Ajax响应而不是刷新页面,请将@ResponseBody添加到方法声明中:
public @ResponseBody String home(Locale locale, Model model) { .. }
并返回您的JSON字符串(假设您没有更新模型,如果是这种情况)。