2013-06-20 27 views
16

Uygulamamda 3 ve Çini 2'yi kullanıyorum ve yeniden yönlendirme konusunda biraz sorun yaşıyorum. Tercihen, Controller1 yönteminden Controller2 yöntemine çağrı yapmak veya yönlendirmek istiyorum, ancak şimdiye kadar başarısız oldu.Bir denetleyici yönteminden başka bir denetleyici yöntemine yönlendirme

pageviews.properties dosyasında yeni bir giriş oluşturmaya çalıştım. Böylelikle bu ismi Controller1'den döndürebilirdim ve xml dosyalarından fayans def ismimi arayacaktı.

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

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

Ama URL'min aşağıda gösterilen gibi dönen deneyin URL'nin bir parçası olarak createRejectionEmail içeriyor - yerine fayans Defs içinde aramak yapmak için o kullanmanın. mav.setViewName ("redirectRejectionEmail"); dönüş 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> 

Geçerli yapılandırmam aşağıda.

<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> 

Her türlü yardım ve kılavuz takdir edilecektir!

cevap

38

Kontrol ünitenizden, ModelAndView olmak için dönüş tipini ve aşağıdaki kodu döndürün. Bu isteği yeniden yönlendirecek ve yeni URL için kontrolörü arayacaktır.

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

Alternatif olarak, web denetleyicisi yönteminde HttpServletResponse almak ve bir yönlendirme geri dönebilirler.

public void myController(HttpServletResponse response){ 
response.sendRedirect("/myURL"); 
} 
+0

Cevabınız için teşekkürler. Bunu denedim ve aşağıdakileri alıyorum: 'Spring-MVC-for-OA' adıyla sunucu uygulamasında 'redirect: /myapppath/status/displayEmailRejectionForm.html' adıyla görünümü çözemedim. SHoudl Farklı bir görünüm çözümleyici kullanıyor muyum? Şu anda, ResourceBundleViewResolver ile fayans2 kullanıyoruz – Carl

+0

OK Whew! İşe yarıyor! Yardımın için çok teşekkür ederim. Ayrıca UrlBasedViewResolver'ı uygulama içeriğime eklemem gerekiyordu. Cevap vermek için zaman ayırdığınız için gerçekten minnettarım! – Carl

+0

Bu, @RequestMapping açıklamalı yöntemleri için String döndürme türüyle bile iyi çalışıyor gibi görünüyor. Carl'ın durumunda olduğu gibi, anahtar UrlBasedViewResolver sınıf yapılandırmasını eklemektir. – Marin

6
@RequestMapping(value = "/timeout", method = RequestMethod.GET) 
    public ModelAndView loginForm(HttpServletRequest request,HttpServletResponse response) { 


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

    } 

bu yöntem işleyicisi çağrısı o zaman/app/zaman aşımı denetleyiciye yönlendirme .

+0

kullanıcılarına göre farklılık gösterir. En iyisi, uygulamanızın içeriğine sahip olması durumunda, bu yöntemin açıkça geçmesine gerek kalmadan çözmesidir. – deFreitas