首页 > 解决方案 > Spring Boot:传递哈希图并打开新页面

问题描述

我对所有 Web 开发都很陌生,我正在努力寻找我正在寻找的东西。我正在使用弹簧靴。

我的期望: 用户将打开一个页面,填写表单详细信息,单击提交按钮并重定向到一个新页面。表单信息将存储在哈希图中并在我的后端使用。

现实: 用户打开页面,填写表单详细信息,单击提交按钮,但不会被重定向到新页面。尽管如此,信息仍存储在哈希图中。

HTML:

<div class="container" ng-app="app">
        <h1>Configurador de Plugin</h1>
            <div ng-controller = "plugins">
            <form>
                <div class="form-group">
                    <label>Database Details:</label> 
                    <input type="text" class="form-control" id="hostname" placeholder="Informe o Endereço do Servidor" ng-model="hostname">
                    <input type="text" class="form-control" id="port" placeholder="Informe a porta" ng-model="port">
                    <input type="text" class="form-control" id="username" placeholder="Informe o usuário" ng-model="userdb">
                    <input type="text" class="form-control" id="userpass" placeholder="Informe a senha" ng-model="userpass">
                    <input type="text" class="form-control" id="database" placeholder="Informe qual o banco de dados" ng-model="database">
                <button ng-click="validar()" type="submit" class="btn btn-default">Search</button>
                <div ng-show="visivel"> 


                    <p>{{valor}}</p>
                </div>  
            </form>
            <div>Make a choice</h3>
            </div>
            <div class="radio">
                <label><input ng-model="plugin.Name" value="test" type="radio" name="Test">Test</label></div>
            <div class="radio">
                <label><input ng-model="plugin.Name" value="v2" type="radio" name="V2">V2</label></div>
            <div class="radio">
                <label><input ng-model="plugin.Name" value="v1" type="radio" name="V1" >V1</label></div>
            Texto:
            <p>{{plugin.Name}}</p>
            <br>
            <button ng-click="sendForm()" type="submit" class="btn btn-default">Search</button>

        </div>
    </div>

JS:

app.controller('plugins', function($scope, $http, $location) {
    $scope.validar = function(){
        $scope.visivel = true;
        $scope.valor = $scope.hostname,
        console.log($scope.hostname)
    }

    $scope.enviarForm = function(){

        var url = $location.url() + "test";

        var config = 
        {
                headers : 
                {
                    'Content-Type': 'application/json;charset=utf-8;'
                }
        }
        console.log($scope.hostname);
        var data = 
        {
                hostname: $scope.hostname,
                port: $scope.port,
                username: $scope.username,
                userpass: $scope.userpass,
                database: $scope.database
        };


        $http.post(url, data, config).then(function (response) 
                {
            $scope.postResultMessage = "Sucess!";
        }, 
        function (response) {
            $scope.postResultMessage = "Fail!";
        });

    }
});

控制器:

@RequestMapping("/test")
    public ModelAndView CadastroEnotas(@RequestBody HashMap<String, Object> data) {
        ModelAndView modelAndView = new ModelAndView("newPage");
        modelAndView.addAllObjects(data);
        return modelAndView;
    }

所以,我的期望是,上面的控制器会将用户发送到 newPage,但事实并非如此。

我正在谷歌搜索,但我可能误解了 ModelAndView 的概念,或者可能误解了如何在我的 js 上执行该功能......

我认为与我正在寻找的最接近的描述如下:angular event success when submit form it opens popup,但我未能使其工作。有人可以指出我做错了什么吗?

标签: javascriptjavaangularspring-boot

解决方案


适当使用redirect.

ModelAndView modelAndView =  new ModelAndView("redirect:/newPage.htm");
modelAndView.addAllObjects(data);
return modelAndView;

或者在发布请求后尝试重定向:$location.path('/newPage')

检查这样的事情:重定向


推荐阅读