小编Chr*_*ong的帖子

Spring Data的MongoTemplate和MongoRepository有什么区别?

我需要编写一个应用程序,我可以使用spring-data和mongodb进行复杂的查询.我一直在使用MongoRepository开始,但在复杂的查询中苦苦寻找示例或实际理解语法.

我在谈论这样的查询:

@Repository
public interface UserRepositoryInterface extends MongoRepository<User, String> {
    List<User> findByEmailOrLastName(String email, String lastName);
}
Run Code Online (Sandbox Code Playgroud)

或者使用基于JSON的查询,我尝试通过反复试验,因为我没有正确的语法.即使在阅读了mongodb文档(由于语法错误而导致的非工作示例).

@Repository
public interface UserRepositoryInterface extends MongoRepository<User, String> {
    @Query("'$or':[{'firstName':{'$regex':?0,'$options':'i'}},{'lastName':{'$regex':?0,'$options':'i'}}]")
    List<User> findByEmailOrFirstnameOrLastnameLike(String searchText);
} 
Run Code Online (Sandbox Code Playgroud)

阅读完所有文档后,似乎mongoTemplate记录得更好MongoRepository.我指的是以下文档:

http://static.springsource.org/spring-data/data-mongodb/docs/current/reference/html/

你能告诉我什么更方便,更强大吗?mongoTemplate还是MongoRepository?两者是否同样成熟,或者其中一个缺少比另一个更多的功能?

java spring mongodb spring-data spring-data-mongodb

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

我如何以一种宁静的方式使用Spring 3.2 spring-mvc上传/流式传输大图像

我尝试将大图像上传/流式传输到REST控制器,该控制器接收文件并将其存储到数据库中.

@Controller
@RequestMapping("/api/member/picture")
public class MemberPictureResourceController {

  @RequestMapping(value = "", method = RequestMethod.POST)
  @ResponseStatus(HttpStatus.NO_CONTENT)
  public void addMemberPictureResource(@RequestBody InputStream image) {
    // Process and Store image in database
  }
}
Run Code Online (Sandbox Code Playgroud)

这是我正在尝试实现的非工作示例(当然,或者我猜这样,InputStream不起作用).我想通过@RequestBody流式传输/读取图像.

我到处搜索,但找不到如何实现这一目标的好例子.大多数人似乎只询问如何通过表单上传图像,但不使用REST/RestTemplate来执行此操作.有没有人可以帮我这个?

我很感谢任何正确方向的暗示.

亲切的问候,克里斯

解决方案

在这里,我尝试在Dirk和Gigadot的输入之后发布适合我的解决方案.目前我认为两种解决方案都值得一看.起初我尝试在Dirk的帮助下发布一个工作示例,然后我将尝试在Gigadot的帮助下创建一个.我会将Dirks的答案标记为正确答案,因为我一直在明确询问如何通过@RequestBody上传文件.但我也很想测试Gigadot的解决方案,因为它可能更容易,更常见.

在下面的示例中,我将文件存储在MongoDB GridFS中.

解决方案1 ​​ - Dirks推荐后的示例

控制器(在评论中使用curl命令进行测试):

/**
*
* @author charms
* curl -v -H "Content-Type:image/jpeg" -X PUT --data-binary @star.jpg http://localhost:8080/api/cardprovider/logo/12345
*/
@Controller
@RequestMapping("/api/cardprovider/logo/{cardprovider_id}")
public class CardproviderLogoResourceController {

  @Resource(name = "cardproviderLogoService")
  private CardproviderLogoService cardproviderLogoService;

  @RequestMapping(value = "", method = RequestMethod.PUT)
  @ResponseStatus(HttpStatus.NO_CONTENT)
  public void addCardproviderLogo(@PathVariable("cardprovider_id") …
Run Code Online (Sandbox Code Playgroud)

rest spring spring-mvc

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

spring-data mongodb自定义实现PropertyReferenceException

我正在尝试根据参考4.4自定义实现实现自定义查询:

http://static.springsource.org/spring-data/data-mongodb/docs/current/reference/html/repositories.html

Spring Data的MongoTemplate和MongoRepository有什么区别?

我这样做是因为我需要使用mongoTemplate进行特殊查询.

我得到的错误是一个PropertyReferenceException.所以spring-data似乎试图自动生成我不想要的查询.我想使用自己的自定义查询.

org.springframework.data.mapping.PropertyReferenceException: No property search found for type com.eerra.core.common.dto.User
Run Code Online (Sandbox Code Playgroud)

这里也描述了这个问题,但解决方案对我来说似乎不起作用:

http://forum.springsource.org/showthread.php?114454-Custom-repository-functionality

如果没有spring-data尝试自动生成查询,如何实现自定义查询接口和实现?

组态

弹簧配置

弹簧data.xml中

<!-- Spring Data MongoDB repository support -->
<mongo:repositories base-package="com.eerra.*.common.service" />
Run Code Online (Sandbox Code Playgroud)

存储库类和接口位于以下包中:

com.eerra.core.common.service.UserRepositoryInterface.java com.eerra.core.common.service.UserRepoistoryCustom.java(interface)com.eerra.core.common.service.UserRepositoryCustomImpl.java(implementation)

UserRepositoryCustom.java

public interface UserRepositoryCustom {
    List<User> searchAllUsers();
}
Run Code Online (Sandbox Code Playgroud)

UserRepositoryCustomImpl.java

public class UserRepositoryCustomImpl implements UserRepositoryCustom {

    @Autowired
    private MongoTemplate mongoTemplate;

    @Override
    public List<User> searchAllUsers() {
        return mongoTemplate.findAll(User.class);
    }
}
Run Code Online (Sandbox Code Playgroud)

UserRepositoryInterface.java

@Repository
public interface UserRepositoryInterface extends MongoRepository<User, String>, UserRepositoryCustom {
    User findByEmail(String email);
    List<User> findByEmailLike(String email);
    List<User> findByEmailOrLastName(String …
Run Code Online (Sandbox Code Playgroud)

spring spring-data spring-data-mongodb

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

在 Flutter 中将 Firestore DocumentSnapshot 转换为 Map

我需要使用 Flutter 在 Firestore 中使用嵌套数组更新文档。

所以我需要将完整的文档放入一个 Map 中,重新排序“sections”数组中的映射,然后将数据存储回文档中。

然而,我不熟悉如何将快照 (DocumentSnapshot) 的数据放入地图。

下面是一个对我尝试实现的目标不起作用的示例:

final Map<String, dynamic> doc = snapshot.data as Map<String, dynamic>;
Run Code Online (Sandbox Code Playgroud)

“snapshot.data”包含文档的值。文档的结构如下所示:

{
  name: "Course 1"
  sections: [
    {name: "Section 1"},
    {name: "Section 2"}
  ]
}
Run Code Online (Sandbox Code Playgroud)

重新排序部分数组中的地图后,我需要将数据保存回文档中。

  • 问题1:如何将snapshot.data 的内容读入Map?
  • 问题 2:我会删除文档,然后重新添加吗?或者我可以更新所有内容吗?

这里功能齐全。相关代码在“onDragFinish”中。

 // Build editable list with draggable list tiles and swipe to delete
  List<Widget> buildListViewEdit() {
    final course = db.collection("school").document("3kRHuyk20UggHwm4wrUI")
      .collection("course").document("74UsE9x7Bsgnjz8zKozv").snapshots();

    return [
      StreamBuilder(
        stream: course,
        builder: (context, snapshot) {
          if (!snapshot.hasData) return const Text("Loading...");

          return Expanded(
            child: DragAndDropList( …
Run Code Online (Sandbox Code Playgroud)

flutter google-cloud-firestore

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

电子邮件表单验证一次一个

我正在尝试为电子邮件字段实现表单验证.验证应该做到以下:

  • 检查是否已通过必需属性输入电子邮件,如果未输入电子邮件则显示消息
  • 检查电子邮件是否具有有效格式(似乎是在没有指定属性的情况下自动完成),如果格式错误则显示消息
  • 检查电子邮件在$ http.get电话上是否唯一,并在发现电子邮件时显示一条消息,因此无法使用

我希望显示第一条消息,如果该字段为空,如果电子邮件无效并且出现第三条消息,则会显示第二条消息,如果找到电子邮件地址,因此一次不唯一.

如果我只尝试使用"required"属性,但是一旦我添加了我的email-available指令属性,它就不再检查电子邮件的格式,并且email-available指令与所需属性一起执行.两个消息都会弹出,但我只希望用户一次看到一条消息.

我正在使用angularjs 1.1.3.

谁能告诉我,我可能做错了什么?

HTML

<div id="user_mod" class="mod_form" ng-show="userModScreenIsVisible">
<form name="mod_user" novalidate>
    <input type="email" name="email" ng-model="user.email" placeholder="E-Mail" required email-available/>
    <div class="user-help" ng-show="mod_user.email.$dirty && mod_user.email.$invalid">Invalid:
        <span ng-show="mod_user.email.$error.required">Please enter your email.</span>
        <span ng-show="mod_user.email.$error.email">This is not a valid email.</span>
        <span ng-show="mod_user.email.$error.emailAvailable">This email address is already taken.</span>
    </div>
</form>
Run Code Online (Sandbox Code Playgroud)

指示

directive('emailAvailable', function($http) { // available
    return {
        require: 'ngModel',
        link: function(scope, elem, attr, ctrl) {
            ctrl.$parsers.unshift(function(viewValue) {
                ctrl.$setValidity('emailAvailable', false);
                if(viewValue !== "" && typeof viewValue !== "undefined") { …
Run Code Online (Sandbox Code Playgroud)

angularjs angularjs-directive

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

具有授权的 CORS 失败 (NS_ERROR_DOM_BAD_URI)

很抱歉发布这个相当大的帖子。但我看不出有办法让它变小。责备CORS :)

版本:

  • Angularjs 版本:1.1.3
  • 码头版本:8.1.9
  • Jetty Servlets 版本:8.1.9.v20130131(用于 Jettys CrossOriginFilter)

我想要达到的目标

使用基本授权标头的跨源请求:

  • 来自 Angularjs 的 $http 方法源自 localhost:8000
  • 到 localhost:8080/api/user(Spring MVC REST 接口)。

问题:

  • HTTPFox 显示对 /api/user 的 OPTIONS 请求被拒绝,响应为 302 (NS_ERROR_DOM_BAD_URI)
  • 如果发送了 Authorization Basic 标头,服务器将响应 302 而不是 200。
  • 所谓的简单 CORS 标头工作(没有 Angularjs Authorization Basic 标头集)。
  • Angularjs 返回 0 作为状态(而不是 302 或 200)。
  • 在 HTTPFox 位置标头的响应标头中重定向好像授权失败
  • 使用 Curl(设置了授权标头)进行测试没有任何问题
  • 提供的 Base64 编码的授权字符串是正确的。

问题:

  • OPTIONS 302 (NS_ERROR_DOM_BAD_URI) 的原因是什么?我该如何解决?
  • 为什么 Angularjs 返回 0 而不是 302 或 200(似乎是 x-requested-with 的问题)?
  • 将 Cross Origin …

spring cors angularjs

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

防止验证禁用的表单字段

更新

我已经创建了jsfiddles来说明我的问题,因为问题不明确.

首先,我认为我无法停用表单字段的验证,但我了解到这可以使用ng-required指令完成.

http://jsfiddle.net/charms/YhVfN/23/

我的实际问题是密码字段未设置为原始状态.清除所有其他表单域,但不清除密码字段.

要测试此行为,您可以:

  • 单击"添加用户"按钮
  • 添加电子邮件地址,名字,姓氏,密码和错误密码以进行确认
  • 单击关闭按钮而不保存
  • 单击编辑按钮

然后你会看到密码仍然设置.它不会被$ setPristine方法清除.清除所有其他表单字段.

http://jsfiddle.net/charms/eP7T8/61/

上一个(过时的问题)

有人知道如何停用已禁用字段的验证吗?我正在使用angularjs 1.1.3.

当我创建新用户时,我想验证所有字段,包含密码字段.但是当我编辑用户时,我希望密码字段保持不活动状态并且不会被验证,除非用户通过复选框激活字段.

我目前的问题是,如果我将密码字段设置为ng-disabled = true,则验证仍在进行中.我认为ng-required = false可能会有所帮助,但事实并非如此.

我将密码字段设置为ng-disabled = true和ng-required = false.

<input type="password" name="password" ng-model="password" placeholder="Password" ng-disabled="true" ng-required="false" required/>
Run Code Online (Sandbox Code Playgroud)

我将密码确认字段设置为ng-disabled = true和ng-required = false.

<input type="password" name="passwordConfirm" ng-model="passwordConfirm" placeholder="Confirm Password" ng-disabled="true" ng-required="false" required field-equal="password"/>
Run Code Online (Sandbox Code Playgroud)

但仍然需要验证所需的和字段相等的指令.如何阻止对已停用的字段进行验证?

在我的完整代码下面.

HTML:

<div id="user_list" class="listview_list">
<div id="user_row" class="listview_row" ng-repeat="u in users">
    <div id="user_username" class="listview_column"><span class="listview_mainfield">{{u.email}}</span></div>
    <div id="user_firstname" class="listview_column">{{u.firstName}}</div>
    <div id="user_lastname" class="listview_column">{{u.lastName}}</div>
    <button class="listview_row_button" ng-click="deleteUser(u.id, $index)">Delete</button>
    <button class="listview_row_button" ng-click="showEditScreen(u.id, $index)">Edit</button> …
Run Code Online (Sandbox Code Playgroud)

angularjs

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

存根函数始终返回 null

目前我正在学习 Resocoder 教程(DDD 课程)。在本课程中,有一个名为i_auth_facade.dart 的抽象类,其中包含一个函数 getSignedInUser。

我已经模拟了该类并尝试从 getSignedInUser 方法中获取用户的有效选项,但结果始终为 null。

另外,当我尝试执行AuthBloc 的authCheckRequested方法(然后在后台调用 getSignedInUser 方法)时,我返回 null。

我肯定在 Mockito 上遇到了一些错误,因为存根似乎不起作用。

有人能指出我为什么不返回 optionOf(User) 而是 null 的正确方向吗?

import 'package:bloc_test/bloc_test.dart';
import 'package:dartz/dartz.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:mockito/mockito.dart';
import 'package:teach_mob_student/application/auth/auth_bloc.dart';
import 'package:teach_mob_student/domain/auth/i_auth_facade.dart';
import 'package:teach_mob_student/domain/auth/user.dart';
import 'package:teach_mob_student/domain/auth/value_objects.dart';
import 'package:teach_mob_student/domain/core/value_objects.dart';

class MockIAuthFacade extends Mock implements IAuthFacade {}

void main() {
  final tValidUser = User(
    id: UniqueId(),
    name: StringSingleLine('Test User'),
    emailAddress: EmailAddress('test@user.com'));


  test('Should return valid option of user', () async {
    // This is to check, …
Run Code Online (Sandbox Code Playgroud)

flutter flutter-test

5
推荐指数
0
解决办法
513
查看次数

球衣测试框架灰熊返回404 not found错误

我想在我的应用程序中实现针对Jersey REST / Json的JUnit测试。

我的问题是我没有从Grizzly找回404。但是路径是正确的,并且可以在普通Webcontainer上使用Curl进行测试。

我正在使用GWTP(没有maven)。我正在手动实现属性-> Java Build Path。我正在使用以下版本:

  • Eclipse Indigo(在Windows 7上)
  • asm-3.3.1.jar
  • jersey-client-1.12.jar
  • jersey-core-1.12.jar
  • jersey-json-1.12.jar
  • jersey-server-1.12.jar
  • jersey-servlet-1.12.jar
  • jersey-test-framework-core-1.12.jar
  • jersey-test-framework-grizzly-1.12.jar
  • grizzly-framework-1.9.45.jar
  • grizzly-http-1.9.45.jar
  • grizzly-http-servlet-1.9.45.jar
  • grizzly-portunif-1.9.45.jar
  • grizzly-rcm-1.9.45.jar
  • grizzly-servlet-webserver-1.9.45.jar
  • grizzly-utils-1.9.45.jar
  • servlet-api-2.5.jar
  • junit-4.9.jar(还与4.10.jar一起测试)

根据Jersey文档提供了所有库:http : //jersey.java.net/nonav/documentation/latest/user-guide.html-第7.5章在Maven外部运行测试。

以下是堆栈跟踪:

INFO: GRIZZLY0001: Starting Grizzly Framework 1.9.45 - 01.07.12 12:11
01.07.2012 10:11:20 com.sun.jersey.api.core.PackagesResourceConfig init
INFO: Scanning for root resource and provider classes in the packages:
com.acolsolutions.loyaltycard.resources
01.07.2012 10:11:20 com.sun.jersey.api.core.ScanningResourceConfig logClasses
INFO: Root resource classes found:
class com.acolsolutions.loyaltycard.resources.HelloResource
class com.acolsolutions.loyaltycard.resources.CardResource
01.07.2012 10:11:20 com.sun.jersey.api.core.ScanningResourceConfig init
INFO: No provider …
Run Code Online (Sandbox Code Playgroud)

java rest json jersey grizzly

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