重定向到SpringMvc中的控制器

时间:2016-10-19 09:19:24

标签: spring-mvc model-view-controller

我有一个类,其中有多个控制器,并且我想从另一个控制器调用另一个控制器,这个控制器位于不同的类中,当调用特定的控制器时,控制器将创建视图。

我的代码是
第一类 // 将从中调用控制器的类

    @Controller
@RequestMapping(value="/register")
public class PatientController {
@RequestMapping(value="/demo1", method=RequestMethod.GET)
public String demo1(){
    System.out.println("Demo1 method.....");
    return "redirect:user/dashboard";
}
}  

第二类 // 此类的控制器

@Controller
        @RequestMapping("/user")
    public class UserDasboardController {
    @RequestMapping(value="/dashboard", method=RequestMethod.GET)
        public String get(ModelMap model){

            return "userdashboard";// returning view
        }

    }  

调用第一个控制器后,将URL设为".../register/user/dashboard" 但它应该将网址设为"..../user/dashboard"

请建议我如何实现这一目标。 或者还有其他方法可以做同样的事情。

2 个答案:

答案 0 :(得分:1)

当对同一控制器文件使用重定向时,我们可以将其用作

 <?= GridView::widget([
    'dataProvider' => $dataProvider,
    //'filterModel' => $searchModel,
    'columns' => [
        ['class' => 'yii\grid\SerialColumn'],
        [
            'attribute' => 'type',
            'value' => function ($model) {
                return  \app\models\BlockType::getConstantMessage($model->type);
            },
        ],
        [
            'class' => 'kartik\grid\EditableColumn',
            'header' => 'POSITION',
            'attribute' => 'position',
        ],
        [
            'attribute' => 'access',
            'value' => function ($model) {
                return  \app\components\Helper::ACCESS[$model->access];
            },
        ],
        'some_attribute',
        [
           'attribute' => 'other_relation',
           'value' => 'model.relation.column'
         ],
        [
            'attribute' => 'Page',
            'value' => function ($model) {
                return  $model->page->pageContent->name;
            },
        ],

        ['class' => 'yii\grid\ActionColumn'],
    ],
]); ?>

如果你想调用另一个类的控制器,你必须在它之前使用return "redirect: controllerName" 来调用它,这样就像

一样
/

希望这有帮助。

答案 1 :(得分:0)

另一个解决方案是:MvcUriComponentsBuilder MvcUriComponentsBuilder docs

有一些很棒的方法,比如:fromMethod(),fromController()等等。 您可以自动接收到另一个方法/控制器的正确重定向路径。

示例 - 重定向到另一个控制器:

final UriComponentsBuilder uriComponents = MvcUriComponentsBuilder.fromController(WheredoYouWantToRedirectController.class);
final String path = uriComponents.build().getPath();

return REDIRECT_PREFIX+path;

以同样的方式,您可以使用重定向到方法。 MvcUriComponentsBuilder有助于减少与重定向相关的错误。

请查看文档以获取更多信息。