标签: controller

Exception handling in Grails controllers

我知道如何使用UrlMappings在Grails中进行通用异常处理,并使用ErrorController进行泛型异常处理,这样如果异常转义控制器,用户将被发送到通用错误页面并记录异常.我也知道如何使用try/catch块来处理特定异常并尝试从中恢复.

但是在大多数控制器中,如果发生异常,我只想给用户一个稍微更具体的错误消息.所以在创建操作中,我想告诉用户该项目未创建.或者在导入操作中,我想告诉用户导入失败.现在,控制器看起来像:

class ThingController {
  def create = {
    try {
      // The real controller code, which quickly hands it off to a service
    } catch (Exception e) {
      handleException(e, "There was an error while attempting to create the Thing")
    }
  }

  def delete = {
    try {
      // The real controller code, which quickly hands it off to a service
    } catch (Exception e) {
      handleException(e, "There was an error while attempting to delete the Thing")
    }
  }

  private …
Run Code Online (Sandbox Code Playgroud)

grails controller exception-handling exception

19
推荐指数
1
解决办法
3万
查看次数

filter $ scope错误:未知提供者:$ scopeProvider < - $ scope < - transformSensorStatusFilter

marsApp.filter("transformSensorStatus", function($scope) {
    return function(input, options) {

    var sensorReading = ( input ? ( input / 1000) : 0);
    var sensorLowLimit = (options["lowLimit"] ? (options["lowLimit"] / 1000) : 0);
    var sensorHighLimit = (options["highLimit"] ? (options["highLimit"] / 1000) : 0);
    var curStat;
    switch (sensorReading) {
        case 255:
        case 254:
        case 253:
            curStat = generateStateInnerHtml(sensorReading);
            break;
        default:
            curStat = generateStateInnerHtml(options["sensorStatus"]);

    }

    return curStat;


    function generateStateInnerHtml(state) {

        var stateHtml = null;

        if (state == 255 || state == 254) {
            stateHtml = "a"; …
Run Code Online (Sandbox Code Playgroud)

javascript scope controller filter angularjs

19
推荐指数
1
解决办法
3万
查看次数

从before_action中排除控制器

我正在使用before_action过滤器来调用authenticate哪种方法,如果用户无权访问所请求的页面,则会将用户重定向回主页.

我想从此步骤中排除一个页面,仅用于测试目的.

到目前为止我所看到的是,我可以使用except以排除某些控制器操作受到before_action过滤器的影响,如下所示:

before_action :authenticate, except: :demo_login
Run Code Online (Sandbox Code Playgroud)

我也可以像这样一次排除多个动作:

before_action :authenticate, except [:demo_login, :demo_show]
Run Code Online (Sandbox Code Playgroud)

如何排除特定控制器中的所有操作?

controller ruby-on-rails ruby-on-rails-4

19
推荐指数
1
解决办法
2万
查看次数

Ruby on Rails中的Web请求中存在哪些数据(如果有)?

我决定在创建视图助手类时使用单例设计模式.这让我思考; 单例实例是否会在请求中存活?这导致了另一个问题,哪些变量(如果有的话)在Web请求中存活,并且这取决于部署?(Fastcgi,Mongrel,Passenger,......)

我知道Controller实例变量没有持久化.我知道常量是持久的(或重新加载?).但我不知道类变量,类上的实例变量,Eigenclasses,......

singleton persistence controller ruby-on-rails

18
推荐指数
1
解决办法
5639
查看次数

我应该测试我的控制器(MVC)吗?

我已经使用TDD几个月了,现在我想学习如何测试我的控制器(MVC).

通过测试每个功能的最小单元来进行单元测试.有时,控制器不小.他们从模型中获取数据并传递给视图.

我应该如何对控制器进行单元测试?我应该模拟控制器的依赖吗?

控制器测试是否考虑集成测试?

谢谢.

model-view-controller tdd integration-testing controller mocking

18
推荐指数
3
解决办法
3983
查看次数

从Controller访问数据库实体

TL;博士

在一个很好的设计.是否应该在单独的业务逻辑层(在asp.net MVC模型中)处理访问数据库,或者将IQueryables或DbContext对象传递给控制器​​是否可以?

为什么?各自的优点和缺点是什么?


我正在用C#构建一个ASP.NET MVC应用程序.它使用EntityFramework作为ORM.

让我们稍微简化一下这个场景.

我有一个可爱的蓬松小猫数据库表.每只小猫都有小猫图像链接,小猫蓬松指数,小猫名称和小猫ID.这些映射到EF生成的POCO调用Kitten.我可能会在其他项目中使用此类,而不仅仅是asp.net MVC项目.

我有一个KittenController应该去取最新的蓬松小猫/Kittens.它可能包含选择小猫的一些逻辑,但不是太多的逻辑.我一直在和朋友争论如何实现这一点,我不会透露双方:)

选项1:控制器中的db:

public ActionResult Kittens() // some parameters might be here
{
   using(var db = new KittenEntities()){ // db can also be injected,
       var result = db.Kittens // this explicit query is here
                      .Where(kitten=>kitten.fluffiness > 10) 
                      .Select(kitten=>new {
                            Name=kitten.name,
                            Url=kitten.imageUrl
                      }).Take(10); 
       return Json(result,JsonRequestBehavior.AllowGet);
   }
}
Run Code Online (Sandbox Code Playgroud)

选项2:单独的模型

public class Kitten{
   public string Name {get; set; }
   public string Url {get; …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc entity-framework controller separation-of-concerns

18
推荐指数
3
解决办法
1万
查看次数

单元测试在AngularJS中定义控制器的指令

我正在尝试使用Karma和Jasmine测试一个指令来完成一些事情.首先是它使用templateUrl,其次是它定义了一个控制器.这可能不是正确的术语,但它在声明中创建了一个控制器.设置Angular应用程序,以便每个单元都包含在自己的模块中.例如,所有指令都包含在模块app.directive中,所有控制器都包含在app.controller中,所有服务都包含在app.service等中.

为了使事情进一步复杂化,在该指令中定义的控制器具有单个依赖关系,并且它包含一个函数,该函数使$ http请求在$ scope上设置值.我知道我可以使用$ httpBackend mock来模拟这个依赖关系来模拟$ http调用并将正确的对象返回给这个函数的调用.我已经在我创建的其他单元测试中做了很多次,并且很好地掌握了这个概念.

下面的代码是用CoffeeScript编写的.

这是我的指示:

    angular.module('app.directive')
      .directive 'exampleDirective', [() ->
        restrict: 'A'
        templateUrl: 'partials/view.html'
        scope: true
        controller: ['$scope', 'Service', ($scope, Service) ->
          $scope.model = {}
          $scope.model.value_one = 1

          # Call the dependency
          Service.getValue()
            .success (data) ->
              $scope.model.value_two = data
            .error ->
              $scope.model.value_two = 0
        ]
      ]
Run Code Online (Sandbox Code Playgroud)

这是依赖服务:

    angular.module("app.service")
      .factory 'Service', ['$http', ($http) ->

      getValue: () ->
        options.method = "GET"
        options.url = "example/fetch"

        $http _.defaults(options)
Run Code Online (Sandbox Code Playgroud)

这是观点:

    <div>
      {{model.value_one}} {{model.value_two}}
    </div>
Run Code Online (Sandbox Code Playgroud)

我已经简化了这一点,因为我的目标只是了解如何连接它,我可以从那里接受它.我用这种方式构造它的原因是因为我最初没有创建它.我正在为现有项目编写测试,但我没有能力以其他方式配置它.我试图编写测试,但不能让它做我想要的.

我想测试以查看值是否绑定到视图,如果可能还要测试控制器是否正在正确创建值.

这是我得到的:

    'use strict'

    describe "the …
Run Code Online (Sandbox Code Playgroud)

unit-testing controller directive angularjs karma-runner

18
推荐指数
1
解决办法
1万
查看次数

Laravel 5.1删除控制器

我对Laravel 5.1有一个简单的问题.我使用php artisan命令创建了一个控制器:

php artisan make:controller PageSettings
Run Code Online (Sandbox Code Playgroud)

但是这是错误的,因为我真的想在Admin文件夹中创建这个控制器,如下所示:

php artisan make:controller Admin/PageSettings
Run Code Online (Sandbox Code Playgroud)

现在我想摆脱我的旧PageSettings控制器.是否可以删除我的旧PageSettings.php manualy?或者还有什么需要做的事情?

controller laravel laravel-5 artisan laravel-5.1

18
推荐指数
3
解决办法
3万
查看次数

Required_if laravel具有多个值

我有这样的下拉菜单

<select name="selection">
   <option value="1">Option 1</option>
   <option value="2">Option 2</option>
   <option value="3">Option 3</option>
</select>
<input type="text" name="stext">
Run Code Online (Sandbox Code Playgroud)

我想要在laravel

public static myfunction(){
   $input = \Input::only('selection','stext');
   $rule = array(
      'selection' => 'required',
      'stext' => 'required_if:selection,2,3',
   );
   $validate = \Validator::make($input,$rule);
}
Run Code Online (Sandbox Code Playgroud)

但如果我选择选项1,仍然需要stext.为什么?我怎么能解决它?

谢谢你.

php validation controller laravel laravel-4

18
推荐指数
3
解决办法
2万
查看次数

如何在Spring Boot中为每个用户设置速率限制?

我正在开发一个Spring Boot Rest API来处理大量的传入请求调用.我的控制器如下所示:

@RestController

public class ApiController {
    List<ApiObject>  apiDataList;   

    @RequestMapping(value="/data",produces={MediaType.APPLICATION_JSON_VALUE},method=RequestMethod.GET)
    public ResponseEntity<List<ApiObject>> getData(){                                       
        List<ApiObject> apiDataList=getApiData();
        return new ResponseEntity<List<ApiObject>>(apiDataList,HttpStatus.OK);
    }
    @ResponseBody 
    @Async  
    public List<ApiObject>  getApiData(){
        List<ApiObject>  apiDataList3=new List<ApiObject> ();
        //do the processing
        return apiDataList3;
    }
}
Run Code Online (Sandbox Code Playgroud)

所以现在我想为每个用户设置一个ratelimit.假设每个用户每分钟只能请求5个请求或类似的东西.如何设置每个用户的速率限制,每分钟只能进行5次api呼叫,如果用户请求的次数超过了我可以发回429响应?我们需要他们的IP地址吗?

任何帮助表示赞赏.

java rest controller spring-mvc spring-boot

18
推荐指数
3
解决办法
1万
查看次数