标签: controller

Spring MVC Controller使用URL参数重定向而不是响应

我试图在我的Spring MVC应用程序中实现RESTful URL.一切都很好,除了处理表格提交.我需要将其重定向回原始表单或"成功"页面.

@Controller
@RequestMapping("/form")
public class MyController {

    @RequestMapping(method = RequestMethod.GET)
    public String setupForm() {
        // do my stuff
        return "myform";
    }

    @RequestMapping(method = RequestMethod.POST)
    public String processForm(ModelMap model) {            
        // process form data

        model.addAttribute("notification", "Successfully did it!");
        return "redirect:/form";
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,正如我在Spring文档中读到的那样,如果重定向任何参数都会被放入url中.这对我不起作用.围绕这个最优雅的方式是什么?

java redirect controller spring-mvc

39
推荐指数
4
解决办法
16万
查看次数

为什么我想要模拟的属性需要是虚拟的?

我正在进行一些单元测试,并使用Moq模拟一些属性.

现在,这是一个Controller测试(ASP.NET MVC 3).我的控制器派生自一个名为AbstractController抽象控制器.

该控制器依赖于Http Context(为了做主题,基于HTTP HOST头的特定于域的逻辑等).

这是通过名为WebSiteSettings的属性完成的:

public abstract class AbstractController : Controller
{
   public WebSiteSettings WebSiteSettings { get; private set; }

   // other code
}
Run Code Online (Sandbox Code Playgroud)

注意私人集 - ctor设置它.所以,我把它改成使用了一个界面,这就是我所嘲笑的:

public IWebSiteSettings WebSiteSettings { get; private set; }
Run Code Online (Sandbox Code Playgroud)

然后我创建了一个"FakeWebSiteSettings",它嘲笑Http Context以便它读取HTTP头.

问题是,当我运行测试时,我得到一个NotSupportedException:

非虚拟(在VB中可覆盖)成员的设置无效:x => x.WebSiteSettings

这是相关的模拟代码:

var mockWebSiteSettings = new Mock<FakeWebSiteSettings>();
var mockController = new Mock<MyController>(SomeRepository);
mockController.Setup(x => x.WebSiteSettings).Returns(mockWebSiteSettings.Object);

_controller = mockController.Object;

var httpContextBase = MvcMockHelpers.FakeHttpContext();
httpContextBase.Setup(x => …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc unit-testing controller moq

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

AngularJS - 指令与控制器

我正在尝试使用AngularJS创建我的第一个应用程序.但是,如果我需要为我的特定情况使用指令,我有点困惑.

我有一个简单的Map页面,我需要显示所选区域的lat/lon值.目前我根本没有使用指令.我在控制器中执行所有操作并使用partials来显示结果.我不打算在任何其他地方重复使用我的地图视图.这就是为什么我觉得我不需要指令.

另一方面,我在某处读到,每当你试图操纵控制器中的DOM时(我正在使用google maps API),你应该将该部分移动到指令中.

这是我的简单控制器:

function MapViewController($scope) {
  $scope.zoom = 6;
  $scope.lat = 37;
  $scope.lon = -122;
  var mapOptions = {
    center: new google.maps.LatLng($scope.lat, $scope.lon),
    zoom: $scope.zoom,
    mapTypeId: google.maps.MapTypeId.HYBRID
  };
  $scope.map = new google.maps.Map(
      document.getElementById('map-canvas'), mapOptions);

  /*
   * Update zoom and other map attributes.
   */
  google.maps.event.addListener($scope.map, 'center_changed', function() {
    $scope.$apply(function () {
      $scope.zoom = $scope.map.getZoom();
      var center = $scope.map.getCenter();
      $scope.lat = center.lat();
      $scope.lon = center.lng();
      var bounds = $scope.map.getBounds();
      var northEast = bounds.getNorthEast();
      $scope.northEastLat = northEast.lat();
      $scope.northEastLon = northEast.lng(); …
Run Code Online (Sandbox Code Playgroud)

controller angularjs-directive

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

Spring MVC - 表单的多个提交按钮

我试图将2个提交按钮发布到表单,每个按钮操作映射到不同的控制器.这是我的映射

@RequestMapping(value="/save", method=RequestMethod.POST, params="save")
@RequestMapping(value="/save", method=RequestMethod.POST, params="renew")
Run Code Online (Sandbox Code Playgroud)

我的提交按钮看起来像这些 -

<input type="submit" name="save" class="button" value="Save" />
<input type="submit" name="renew" class="button" value="Renew" />
Run Code Online (Sandbox Code Playgroud)

从我的映射中可以看出,我依靠使用params来区分点击的按钮.问题是它有90%的时间有效,但有时我会得到以下例外 -

java.lang.IllegalStateException: Ambiguous handler methods mapped for HTTP path 'http://localhost:8090/myapp/save': {public java.lang.String com.myapp.SaveController.save(MyEntity,javax.servlet.http.HttpSession), public java.lang.String com.myapp.SaveController.saveAndRenew(MyEntity,javax.servlet.http.HttpSession)}
org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.lookupHandlerMethod(AbstractHandlerMethodMapping.java:248)
org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.getHandlerInternal(AbstractHandlerMethodMapping.java:194)
Run Code Online (Sandbox Code Playgroud)

奇怪的是,当这种情况发生并重新提交页面时,一切都运行良好.有没有更好的方法来实现我想要做的事情?

谢谢!

java spring controller

38
推荐指数
4
解决办法
8万
查看次数

Request.Url什么时候可以为空?

在我使用的控制器代码中:Request.Url.<Something>.ReSharper建议Request.Url可以为null.

那么,什么时候可以Request.Url为null?我不是在谈论测试,我只对一个已经部署的应用程序感兴趣.

请注意,到目前为止,我还没有收到任何NullReferenceException使用的信息Request.Url.

resharper controller asp.net-mvc-3

38
推荐指数
2
解决办法
6157
查看次数

一个控制器使用另一个控制器的视图进行渲染

我有QuestionController我现在有了AnotherQuestionController,其中的动作应该使用app/views/question /中的模板和部分渲染吗?这可能吗?看起来应该是这样.

我试过了

render :template => "question/answer"
Run Code Online (Sandbox Code Playgroud)

但answer.html.erb包含部分内容,我得到的错误就像

"在视图路径中缺少模板another_question/_my_partial.erb"

那么有没有办法告诉Rails"将AnotherQuestionController视为其QuestionController,并在app/views/question中查找视图和部分"?或者我是否必须创建app/views/another_question - 这将导致重复(这不能是Rails方式).

谢谢

controller ruby-on-rails render view

37
推荐指数
2
解决办法
4万
查看次数

Ruby on rails 3 link_to控制器和动作

我知道这可能是一个非常简单的概念.我正在尝试创建一个控制器和操作的链接.例如,我的布局文件中有一个链接,用于在单击链接时更新记录,因此我需要能够链接到控制器和操作.我怎么做到这一点?

action controller link-to ruby-on-rails-3

37
推荐指数
2
解决办法
5万
查看次数

在Controller中调用模型方法

我在这里有一定的困难,我无法成功地调用它属于一种方法ProjectPage 模型ProjectPage 控制器.

我在我的ProjectPage控制器中:

def index
  @searches = Project.published.financed     
  @project_pages = form_search(params)
end
Run Code Online (Sandbox Code Playgroud)

在我的ProjectPage 模型中:

def form_search(searches)
  searches = searches.where('amount > ?', params[:price_min]) if check_params(params[:price_min])
  @project_pages = ProjectPage.where(:project_id => searches.pluck(:'projects.id'))
end
Run Code Online (Sandbox Code Playgroud)

但是,我无法成功调用该form_search 方法.

methods controller model ruby-on-rails instantiation

37
推荐指数
2
解决办法
6万
查看次数

AngularJS指令属性来自控制器的访问

我试图在控制器函数中访问指令的属性.但是,当我访问它时,它是未定义的.我注意到如果我做一个简单的计时器就行了.有没有办法只在指令执行后才能执行代码,并且它的范围已准备好并设置为使用?

我弄了一个小提琴.确保您的控制台已打开.http://jsfiddle.net/paulocoelho/uKA2L/1/

这是我在小提琴中使用的代码:

<div ng-app="testApp" >
    <testcomponent text="hello!"></testcomponent>
</div>
Run Code Online (Sandbox Code Playgroud)
var module = angular.module('testApp', [])
    .directive('testcomponent', function () {
    return {
        restrict: 'E',
        template: '<div><p>{{text}} This will run fine! </p></div>',
        scope: {
            text: '@text'
        },
        controller: function ($scope, $element) {
            console.log($scope.text); // this will return undefined
            setTimeout(function () {
                console.log($scope.text);    // this will return the actual value...
            }, 1000);
        },
        link: function ($scope, $element, $attrs) {
            console.log($scope.text);
            setTimeout(function () {
                console.log($scope.text);
            }, 1000);
        }
    };
});
Run Code Online (Sandbox Code Playgroud)

javascript events controller angularjs angularjs-directive

37
推荐指数
4
解决办法
6万
查看次数

在MVC中处理$ _POST数据的正确方法是什么?

我的PHP系统中存在常见的MVC情况:ControllerView包含$_POST数据接收请求.现在我有三种方法来处理数据:

a)Controller唯一调用ModelModel处理$_POST数据.
b)在Controller所述转换$_POST数据成变量,并将它们传递到Model.
c)Controller$_POST数据转换为Model域对象并仅将对象传递给Model.

目前,我正在关注选项A,但我认为这是错误的,所以我在考虑使用选项C.

那么,根据MVC,处理$_POST数据的正确方法是什么?

编辑目前,我没有使用任何MVC框架.

编辑2通常,同样Controller处理来自浏览器,Web服务,离线应用程序等的请求,或者每个人都有自己的请求Controller

php model-view-controller post controller

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