小编Cro*_*zin的帖子

多个控制器具有相同的URL路由但不同的HTTP方法

我有以下两个控制器:

[RoutePrefix("/some-resources")
class CreationController : ApiController
{
    [HttpPost, Route]
    public ... CreateResource(CreateData input)
    {
        // ...
    }
}

[RoutePrefix("/some-resources")
class DisplayController : ApiController
{
    [HttpGet, Route]
    public ... ListAllResources()
    {
        // ...
    }

    [HttpGet, Route("{publicKey:guid}"]
    public ... ShowSingleResource(Guid publicKey)
    {
        // ...
    }
}
Run Code Online (Sandbox Code Playgroud)

所有这三个行动实际上都有三条不同的路线:

  • GET /some-resources
  • POST /some-resources
  • GET /some-resources/aaaaa-bbb-ccc-dddd

如果我将它们放入单个控制器中,一切正常,但是如果我将它们分开(如上所示),WebApi会抛出以下异常:

找到了与URL匹配的多种控制器类型.如果多个控制器上的属性路由与请求的URL匹配,则会发生这种情

这个消息很明显.在寻找适合控制器/操作的候选者时,WebApi似乎没有考虑HTTP方法.

我怎样才能实现预期的行为?


更新:我已经深入研究了Web API内部,我明白这是默认情况下的工作方式.我的目标是分离代码和逻辑 - 在现实世界中,这些控制器具有不同的依赖关系并且更复杂一些.为了维护,可测试性,项目组织等,它们应该是不同的对象(SOLID和东西).

我认为我可以覆盖一些WebAPI服务(IControllerSelector等),但这似乎是一个有点风险和非标准的方法,这个简单的 - 和我假设 - 常见的情况.

c# asp.net-web-api attributerouting asp.net-web-api-routing asp.net-web-api2

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

Doctrine 2.0集成到Zend Framework 1.10中

任何人都可以帮助我如何很好地将doctrine 2.0集成到ZF 1.10中?我找到了一些应用程序资源,但没有完整的解决方案.非常感谢

doctrine zend-framework doctrine-orm

6
推荐指数
1
解决办法
4150
查看次数

MVC PHP - 从Model发送邮件

每当我从模型或控制器发送邮件时,我都会遇到问题.事情是在我使用的控制器中

这是关于PHP的.

在控制器中:

if (Post::get()){
   $this->model->registerUser( ... );
   $this->model->mailSendUserActivation();
   // assign something to view.
}
Run Code Online (Sandbox Code Playgroud)

在模型中:

public function mailSendUserActivation(){
    $mail = new \com\Mail();
    // assign stuff to mail from API classes and other functions in model.
    $mail->send();
}
Run Code Online (Sandbox Code Playgroud)

它是否正确 ?或者邮件真的应该从控制器发送?

php model-view-controller controller model php-5.3

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

全文和基于属性的搜索引擎的混合

背景:

表示不同类型事件(音乐会,足球比赛,慈善机构等)的SQL数据库,其中每个都包含与事件相关的数据(音乐会 - 艺术家姓名,匹配 - 主持人/访客团队).所有这些事件都从一个通用表继承event,该表包含与所有这些事件相关的数据(名称,描述,位置,开始/结束日期).使用HibernateDoctrine中已知的table-per-subclass模型实现继承.该数据库还存储表artists(id,name,birth_date)和football_teams(id,name,country,coach_name)在使用event_concertsevent_football_matches表(通过FKS).

问题:

创建一个给定一些标准({name: "manchester", startDate: "01.01.2012 - 01.02.2012"}{location: "london", description: "artists +metallica -bieber"})的搜索引擎将返回符合条件的所有事件,以及artists/ football_teamstables的结果.

这些事件的某些属性包含大量文本,应以全文搜索方式进行搜索.

例:

根据以下搜索条件:

{ location: "london", startDate: "05.11.2012 - 07.11.2012" }
Run Code Online (Sandbox Code Playgroud)

搜索引擎应返回:

  1. (橄榄球事件)阿森纳对曼联比赛,酋长球场,伦敦,06.11.2012
  2. (音乐会活动)Metallica音乐会,一些花式位置,05.11.2012
  3. (足球队/非活动)阿森纳,成立时间:1886年,联赛:英超联赛
  4. (足球队/不是活动)切尔西,成立时间:1905年,联赛:英超联赛
  5. (节日活动)万圣节在伦敦,07.11.2012
  6. (舞蹈活动)Sadler's Wells的睡美人,45英镑,07.11.2012
  7. (音乐家,不是活动)Neil Christian,1943 - 2012,Rock'n'Roll主唱

如您所见,仅在事件发生时才考虑startDate(与事件相关的属性). …

performance search full-text-search

5
推荐指数
1
解决办法
427
查看次数

Doctrine2 Mongodb添加更多$或运算符

doctrine2 ODM可以创建以下查询吗?

db.Product.find({ "$or": [ { "name": new RegExp("test*", "i") }, { "tags": new RegExp("public true*", "i") } ], "$or": [{ "public": false, "_id": { "$in": [ ObjectId("4e74121c4fcfa9ff7ac90000"), ObjectId("4e74121c4fcfa9ff7ac80000") ] } }, { "public": true }] });
Run Code Online (Sandbox Code Playgroud)

这里与doctrine2的主要问题我不明白如何在$查询中添加额外$或?

这有助于我使用$和运算符仍然缺失.

我目前正在使用Symfony2 Doctrine2 Mongodb

mongodb symfony doctrine-orm mongodb-php

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

Spring抛出NoClassDefFoundError:MethodInterceptor虽然class存在于classpath中

我正在使用Spring MVC和Hibernate开发一个简单的培训应用程序.我正在使用Maven作为构建工具.所有依赖项(spring,hibernate,aopalliance,junit等)都使用Maven的pom.xml文件解析.

$ mvn war:war glassfish:deploy作品absolutley罚款,项目正在部署到GlassFish服务器 - 所有*.jar文件都被复制(包括com.springsource.org.aopalliance-1.0.0.jar).

我已经制作了一个简单的servlet来测试类路径中是否存在aopalliance:

protected void doGet(...) throws ... {
    response.getWriter().println(org.aopalliance.intercept.MethodInterceptor.class.getCanonicalName());
}
Run Code Online (Sandbox Code Playgroud)

它存在.上面的代码org.aopalliance.intercept.MethodInterceptor按预期显示.

但是,如果我将servlet更改为类似的东西:

protected void doGet(...) throws ... {
    response.getWriter().println(org.springframework.transaction.interceptor.TransactionInterceptor.class.getCanonicalName());
}
Run Code Online (Sandbox Code Playgroud)

它引发了一个异常:

java.lang.NoClassDefFoundError: org/aopalliance/intercept/MethodInterceptor
Run Code Online (Sandbox Code Playgroud)

TransactionInterceptor使用aopalliance接口,但我不明白为什么它找不到它们,而我的servlet可以.我相信它可能与类加载器有某种关系,但我很害怕我不知道如何修复它.

编辑:

一些细节:

编辑:

我还spring.osgi.core/io根据@Ravi的建议添加了依赖项:

<dependency>
    <groupId>org.springframework.osgi</groupId>
    <artifactId>org.springframework.osgi.core</artifactId>
    <version>1.2.1</version>
</dependency>

<dependency>
    <groupId>org.springframework.osgi</groupId>
    <artifactId>org.springframework.osgi.io</artifactId>
    <version>1.2.1</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

但它没有解决问题.

但是,我尝试在VMware vFabric tc Server上运行相同的应用程序,该服务器随SpringSource Tool Suite一起提供,一切正常.这似乎是特定于GlassFish的问题. …

java spring glassfish dependency-management aopalliance

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

在Java中,为什么某些变量最初需要初始化而其他变量只需要声明?

我想在更深层次上理解我是否缺少了解Java何时需要初始化变量与简单声明的东西.在下面的代码中,变量'row'不需要为编译和运行赋值,但是,变量'column'可以.

注意:这个程序没有任何用处 - 它被修剪为只显示这个问题所必需的内容,以免浪费人们宝贵的时间.

这是代码片段:

int row;      //row doesn't need initialization
int column=0; //column does need initialization
for (row=0; row<2; row++){
    for (column=0; column<2; column++){
    }
}
System.out.print("Col:" + column + " row:" + row);
Run Code Online (Sandbox Code Playgroud)

为什么row编译w/o初始化在顶部,但Java认为column"可能没有初始化."?

java variables initialization declaration

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

替换preg_replace中的字符串

<?php
  $a="php.net s earch for in the all php.net sites this mirror only function 
      list online documentation bug database Site News Archive All Changelogs 
      just pear.php.net just pecl.php.net just talks.php.net general mailing 
      list developer mailing list documentation mailing list What is PHP? PHP 
      is a widely-used...";
?>
Run Code Online (Sandbox Code Playgroud)

我想强调具体的话.

例如php,netfunc:

php.net s earch for in the all **php**.**net** sites this mirror only **func**tion list online documentation bug database Site News Archive All Changelogs just pear.**php**.**net** …

php regex highlighting preg-replace

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

您使用symfony 2.0的体验

我将开始一个从头开始构建Web应用程序的新项目.

我一直在考虑为这个项目使用symfony框架.

我应该开始使用symfony 2.0还是坚持使用1.4?我估计这个项目将在今年5月或6月完成,但我意识到symfony 2.0仍处于开发阶段.

我应该使用哪一个?我希望它尽可能灵活.我也听说symfony 2.0比前一​​个更快......

任何人都有当前项目的symfony 2.0(beta)经验?你怎么看 ?我应该使用它还是应该移动到另一个框架(我考虑将kohanaphp作为备份)

php frameworks symfony1 symfony

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

url = new java.net.URL()

url = new java.net.URL(s) 不适合我.

我有一个字符串C:\apache-tomcat-6.0.29\webapps\XEPServlet\files\m1.fo,需要建立一个链接并将其提供给我的格式化程序输出,但收到错误的网址.似乎它不会使我的字符串成为url.我还要提一下,该文件m1.fo文件位于我的webapp\product \中的文件夹中,我给出了完整的字符串路径,如:getServletContext().getRealPath("files/m1.fo").我做错了什么?我怎样才能收到网址链接?

java url

0
推荐指数
1
解决办法
8722
查看次数