Heim  >  Fragen und Antworten  >  Hauptteil

java - spring 能不能在方法内决定返回类型

这个是直接对应 index 模型

java    @RequestMapping(value = "/")
    public String index(Map<String, Object> map) {
        map.put("title", "");
        map.put("keywords", "");
        map.put("description", "");

        return "index";
    }

这个是直接返回 index 字符串

java    @RequestMapping(value = "/")
    @ResponseBody
    public String index(Map<String, Object> map) {
        map.put("title", "");
        map.put("keywords", "");
        map.put("description", "");

        return "index";
    }

能不能在方法中控制他返回对应 index 模型还是返回 index 字符串

就是这2个合并

也就是 @ResponseBody 能不能只用在其他地方

如果是下面这样,他会把 title keywords description 直接加在 /login/ 地址栏直接显示,怎么让他不显示,直接就是 跳转到 /login/

java    @RequestMapping(value = "/")
    public String index(Map<String, Object> map) {
        map.put("title", "");
        map.put("keywords", "");
        map.put("description", "");

        return "redirect:/login/";
    }
PHP中文网PHP中文网2720 Tage vor561

Antworte allen(2)Ich werde antworten

  • ringa_lee

    ringa_lee2017-04-17 13:12:21

    感觉ResponseEntity可以解决题主的问题,但并不推荐这样做,下面只是一个例子。

    @RequestMapping("/entity")
    @ResponseBody
    public ResponseEntity<String> handle(HttpEntity<byte[]> requestEntity) throws UnsupportedEncodingException {
        System.out.println(requestEntity.getHeaders().getFirst("MyRequestHeader"));
        System.out.println(Arrays.toString(requestEntity.getBody()));
    
        HttpHeaders responseHeaders = new HttpHeaders();
        responseHeaders.set("MyResponseHeader", "MyValue");
        return new ResponseEntity<>("Hello World", responseHeaders, HttpStatus.CREATED);
    }
    

    代码乱乱的,写着不顺心,改着还闹心。

    不如用headers区分一下,同一个URL不同headers映射到不同方法。
    比如:

    @RequestMapping(value = "/",method = RequestMethod.GET, produces = MediaType.APPLICATION_XML_VALUE,headers = {"a=1"})
    public String index(Map<String, Object> map) {
        map.put("title", "");
        map.put("keywords", "");
        map.put("description", "");
    
        return "index";
    }
    
    @RequestMapping(value = "/",method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE,headers = {"a=1"})
    @ResponseBody
    public Map indexJson(Map<String, Object> map) {
        map.put("title", "");
        map.put("keywords", "");
        map.put("description", "");
    
        return map;
    }
    

    Antwort
    0
  • 巴扎黑

    巴扎黑2017-04-17 13:12:21

    应该把/login设置成post请求

    Antwort
    0
  • StornierenAntwort