簡體   English   中英

如何在不擴展MultiActionController的情況下按Springframework中的方法名稱分隔邏輯?

[英]How to separate Logics by method name in Springframework without extends MultiActionController?

如標題所述,我想在單個控制器中執行多個功能,而無需繼承MultiActionController。

所以我做了下面的代碼。

package org.owls.replace;

import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping(value={"/test"})
public class TestController {
    private Logger log = Logger.getLogger(TestController.class);

    @RequestMapping(params={"m=doA"})
    public void doA() throws Exception{
        log.info("DoA !");
    }

    @RequestMapping(params={"m=doB"})
    public void doB() throws Exception{
        log.info("DoB !");
    }

    @RequestMapping(params={"m=doC"})
    public void doC() throws Exception{
        log.info("DoC !");
    }
};

此代碼有效。 如果我叫“〜/ m = doA”,它會顯示“ DoA”。 但是,我想要的是除去類上的每個@RequestMapping。(因為參數“ m”是固定的,並且僅方法名可以是參數)

所以我期望的是類似下面的代碼(不起作用。但是要注意@RequestMappping中的params值)。

package org.owls.replace;

import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping(value={"/test"}, params={"doA", "doB", "doC"})
public class TestController {
    private Logger log = Logger.getLogger(TestController.class);

    public void doA() throws Exception{
        log.info("DoA !");
    }

    public void doB() throws Exception{
        log.info("DoB !");
    }

    public void doC() throws Exception{
        log.info("DoC !");
    }
};

**如何在不使用MultiActionController或xml設置的情況下使用參數映射方法名稱?

我的英語很丑陋,但我希望您通過閱讀代碼可以理解我的意思。 感謝您編輯拙劣的英語,並分享我的問題。 :D

Spring MVC具有足夠的可定制性,您可能可以通過實現和注冊自定義HandlerMappingHandlerAdapter ,但這是不值得的。

使用您的第一種直覺,並使用@RequestMapping(params={"m=doXXX"})批注的方法。 這也將充當有關如何映射方法的文檔,而不是進行假設。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM