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オブジェクトをgsonと呼ばれるJSONに変換するためのライブラリがあります。

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

ちなみに、ページを更新するのではなくAjax応答を送信したい場合は、メソッド宣言に@ResponseBodyを追加してください。

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

そして、JSON文字列を返します(この場合、モデルを更新しないと仮定します)。

于 2012-04-17T16:39:34.753 に答える