Pengalihan dari satu metode pengendali ke metode pengendali lainnya

Saya menggunakan Spring 3 dan Tiles 2 dalam aplikasi saya dan memiliki sedikit masalah dengan pengalihan. Sebaiknya, saya ingin dapat memanggil atau mengalihkan dari metode Controller1 ke metode Controller2, tetapi sejauh ini tidak berhasil.

Saya telah mencoba membuat entri baru di file pageviews.properties. Dengan begitu saya bisa mengembalikan nama ini dari Controller1 dan itu akan mencari nama def ubin saya dari file xml.

createRejectionEmail.(parent)=tilesView
createRejectionEmail.url=createRejectionEmail.page

redirectRejectionEmail.(class)=org.springframework.web.servlet.view.RedirectView
rediectRejectionEmail.contextRelative=true
redirectRejectionEmail.url=createRejectionEmail.page

Tetapi, ketika saya mencoba mengembalikan seperti yang ditunjukkan di bawah ini, URL saya berisi createRejectionEmail sebagai bagian dari URL - alih-alih menggunakannya untuk melakukan pencarian di def ubin. mav.setViewName("redirectRejectionEmail"); mengembalikan mav;

<definition name="createRejectionEmail.page" extends="brandedLayout">
  <put-attribute name="targetFunction" value="status" />
  <put-attribute name="content" value="/WEB  INF/jsp/pages/status/createRejectionEmail.jsp" />
</definition>

Konfigurasi saya saat ini ada di bawah ini.

<bean id="resourceViewResolver"
class="org.springframework.web.servlet.view.ResourceBundleViewResolver"
p:order="0" p:basename="config.spring.viewresolution.pageviews"/>

<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
<property name="definitions">
   <list>
  <value>/WEB-INF/jsp/**/views.xml</value>
    </list>
</property>
</bean>

Setiap bantuan dan bimbingan akan sangat dihargai!

Larutan

Dari controller Anda, Anda dapat mengubah tipe pengembalian menjadi ModelAndView dan kode pengembalian di bawah ini. Ini akan mengarahkan kembali permintaan dan memanggil controller untuk URL baru.

return new ModelAndView("redirect:/myURL");

Atau Anda dapat mengambil HttpServletResponse dalam metode controller Anda dan mengembalikan pengalihan.

public void myController(HttpServletResponse response){
response.sendRedirect("/myURL");
}
Komentar (5)
@RequestMapping(value = "/timeout", method = RequestMethod.GET)
    public ModelAndView loginForm(HttpServletRequest request,HttpServletResponse response) {

                return new ModelAndView("redirect:/app/timeout");

    }

Ketika method handler ini memanggil maka ia akan mengarahkan ke controller /app/timeout.

Komentar (1)