2016-06-13 13 views
0

私は、サーバー側でSpring Controllerメソッドを呼び出す必要がありますが、私はすべての@RequestMapping値を使用します。これを行う方法はありますか?RequestMappingを介して他のメソッドからSpring Controllerメソッドを呼び出す

これはMockMvc経由のテストフレームワークで使用されているため、これを行うことができます。

String a = mockMvc.perform(get("/foo/bar/{id}", foobarId)).andReturn().getResponse().getContentAsString(); 
String b = mockMvc.perform(get("/foo/car/{id}", foobarId)).andReturn().getResponse().getContentAsString(); 
String totals = a + b; 

そして、私がそれをやりたい正確に何をやっているようだと率直に言って、私はこれを使用して考えた:私はその正確な機能を求めています。これを使用して問題がありますか?私はコントローラにWebApplicationContextをオートワイヤーするだけで動作します。右? :)

EDIT

リダイレクトは、私が欲しいものではありません。 、私はチェーンの呼び出しにしたくない、とすべての呼び出しは、スタンドアロン方式だけでなく

UPDATE春の起動時にように私には発生し

としてWebブラウザで使用することができなければなりませんそれはコンポーネントのスキャンを行い、@Controllersと@RequestMappingを探し、何らかのマップをURLのclass.method()にマップする必要がありますか?各呼び出しのすべてのクラスをスキャンするわけではありません。問題は、一度スキャンしてロードしたらこのマップはどこにありますか?コントローラの開発者だけがアクセスできますか?何をしたい

+0

のJavaScript/jQueryのを使用することができませんか? – sura2k

+0

いいえ、このサーバーサイドマンデートです。 – mmaceachran

+0

次に、RestTemplateを試してみてください。https://spring.io/guides/gs/consuming-rest/ – sura2k

答えて

0

は次のように、redirectです:

@RequestMapping(value = "/foo/bar/{foobarId}") 
public String testView (@PathVariable("foobarId") String foobarId) { 
    return "any view"; 
} 

@RequestMapping(value = "test") 
public String test (String msg) { 
    String foobarId = .....; 
    return "redirect:/foo/bar/" + foobarId; 
} 
0

それは総ハックですが、完全に動作します:

@Controller 
@RequestMapping(value = "/TEST") 
public class TestController { 

private MockMvc mockMvc; 
private WebApplicationContext wbctx = null; 
@Autowired 
ServletContext servletContext; 

public void init() { 
    if(wbctx==null) { 
     wbctx = WebApplicationContextUtils.getWebApplicationContext(servletContext); 
     mockMvc = MockMvcBuilders.webAppContextSetup(wbctx).build(); 
    } 
} 

@RequestMapping(value = "/test") 
@ResponseBody 
public String testme() throws Exception { 
    init(); 
    String a = mockMvc.perform(get("/foo/bar/{id}", 1)).andReturn().getResponse().getContentAsString(); 
    String b = mockMvc.perform(get("/foo/car/{id}", 1)).andReturn().getResponse().getContentAsString(); 
    return a+b; 
} 
} 
関連する問題