小编Eln*_*mov的帖子

Spring:根据配置文件注入不同的属性文件

首先,一些背景:

我目前正在开发一个项目,我在其中使用Google的AppEngine(GAE)上的Spring框架从Google的一项服务中获取一些数据.为此,我使用了Google的OAuth工具.对于这一点,我需要使用clientSecretclientId特定于我的应用程序.由于这些是静态配置值,我使用Spring <util:properties>(链接到文档)功能将这些值插入到适当的类中.

XML配置:

<util:properties id="googleProperties" location="WEB-INF/google.properties" />
Run Code Online (Sandbox Code Playgroud)

课程用法:

@Value("#{googleProperties['google.data.api.client.id']}")
private String clientId;
Run Code Online (Sandbox Code Playgroud)

我的问题:

事实证明,生产(在App Engine上部署时)和开发(在我的本地机器上)的价值clientIdclientSecret需要不同.为了解决这个问题而不需要在部署时不断更改属性文件中的值,我一直在研究Spring的配置profiles,它允许我为生产和开发指定不同的属性文件.虽然我知道Spring配置文件是如何基于文档工作的,但我不确定在这种特定情况下适当的解决方案是什么.

换句话说,我如何根据我的应用程序是在本地部署还是在GAE上注入不同的属性文件?

java google-app-engine spring

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

在Symfony中修改绑定表单数据的建议位置是哪个?

我有一个创建新的表单Customer.客户可能拥有手机号码.移动号码应该没有+00用户可以键入的前缀.这可以通过以下方式轻松完成:

$customer->setMobile(preg_replace("/^(\+|00)/", '', $customer->getMobile()));
Run Code Online (Sandbox Code Playgroud)

放置此代码的最佳位置是哪个?

  • CustomerController调用实体管理器之前并保持实体.这真的是MVC模式中的控制器问题吗?
  • 使用SanitizeCustomerSubscriber和听取FormEvents:POST_BIND事件
  • 使用CustomerSanitizer服务

还有其他想法吗?当然,我说的是一般的数据操作,手机号码只是一个例子:要消毒的字段可能不仅仅是一个.

symfony-forms symfony

14
推荐指数
2
解决办法
8479
查看次数

Spring MVC - > JSON响应

我有一个JAVA EE后端,我正在使用Spring MVC.我有一个像这样的AJAX调用:

function getAllProjects() {
        $.getJSON("project/getall", function(allProjects) {
            ???
        });
    }
Run Code Online (Sandbox Code Playgroud)

我的后端系统:

@RequestMapping(value="/getall", method=RequestMethod.GET)
public @ResponseBody ??? getAllProjects() {
    ???
}
Run Code Online (Sandbox Code Playgroud)

我必须实施哪些内容才能实现?在后端系统中,我从数据库中调用唯一的id和项目的名称,例如:

1 => My Test Project
4 => Another One
23 => One More Test
Run Code Online (Sandbox Code Playgroud)

id和项目名称应返回到前端系统,因此我可以构建这种类型的HTML ul/li列表:

<ul>
    <li><a href="/1">My Test Project</a></li>
    <li><a href="/4">Another One</a></li>
    <li><a href="/23">One More Test</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)

有谁知道如何做到这一点?

html java ajax json spring-mvc

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

Symfony2自定义密码编码器(bcrypt)

我编写了自己的密码编码器,它实现了PasswordEncoderInterface:

class BCryptPasswordEncoder implements PasswordEncoderInterface {
    protected $encoder;

    public function __construct(BCryptEncoder $encoder) {
        $this->encoder = $encoder;
    }

    public function encodePassword($raw, $salt) {
        return $this->encoder->encodeString($raw, $salt);
    }

    public function isPasswordValid($encoded, $raw, $salt) {
        return $this->encoder->encodeString($raw, $salt) == $encoded;
    }
}
Run Code Online (Sandbox Code Playgroud)

编码器注册为具有id的服务bcrypt.password.encoder.但我不知道,如何告诉symfony使用它.目前app/config/security.yml看起来像这样:

security:
    encoders:
        Symfony\Component\Security\Core\User\User: plaintext

    role_hierarchy:
        ROLE_ADMIN:       ROLE_USER
        ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]

    providers:
        neo4j:
          id: security.user.provider.neo4j
    firewalls:
        dev:
            pattern:  ^/(_(profiler|wdt)|css|images|js)/
            security: false
        secured_area:
            provider: neo4j
            pattern:    ^/.*
            form_login:
                check_path: /login_check
                login_path: /login
            logout:
                path:   /logout …
Run Code Online (Sandbox Code Playgroud)

bcrypt symfony

13
推荐指数
2
解决办法
9224
查看次数

PHP致命错误:第47行的/var/www/znata.com/app/AppKernel.php中找不到类'Application\Sonata\MediaBundle\ApplicationSonataMediaBundle'

我按照这个文档来安装SonataMediaBundle但是我收到了这个错误:

PHP Fatal error:  Class 'Application\Sonata\MediaBundle\ApplicationSonataMediaBundle' not found in /var/www/znata.com/app/AppKernel.php on line 47
Run Code Online (Sandbox Code Playgroud)

使用sonata命令后生成应用程序:

php app/console sonata:easy-extends:generate SonataMediaBundle
Run Code Online (Sandbox Code Playgroud)

新目录生成于:

apps/Application/Sonata/MediaBundle
Run Code Online (Sandbox Code Playgroud)

一切都已完成,但当我在AppKernel.php中注册生成的应用程序时,我收到了该错误.

public function registerbundles()
{
    return array(
        ...
        new Application\Sonata\MediaBundle\ApplicationSonataMediaBundle(),
        ...
    );
}
Run Code Online (Sandbox Code Playgroud)

你知道如何解决这个问题吗?

symfony symfony-sonata symfony-2.1 sonata-admin

13
推荐指数
3
解决办法
8231
查看次数

Symfony2获得对实体的验证约束

我正在研究获取实体的所有验证约束的方法(我想要实现的是使用JQuery Validation Plugin在JSON中返回此数据并在客户端应用相同的约束),但是我在获取约束时遇到一些麻烦,这是我目前的代码:

    $metadata = new \Symfony\Component\Validator\Mapping\ClassMetadata("Namespace\JobBundle\Entity\Job");
    $annotationloader = new AnnotationLoader(new AnnotationReader());
    $annotationloader->loadClassMetadata($metadata);
Run Code Online (Sandbox Code Playgroud)

我在$ metadata中得到的是一个用于constraints属性的空数组,其余的($ properties和$ members只有错误消息......但不是实际的约束(例如:required,integer ...)).

我做错了什么?

symfony symfony-2.1

13
推荐指数
2
解决办法
5352
查看次数

如何在页面重新加载时保持AngularJS中的REST身份验证凭据?

我们构建了一个非常"纯粹"的RESTful服务器,它使用HTTP BASIC AUTHENTICATION.这意味着客户端需要在每个请求时发送用户名/密码.它简单而安全(通过HTTPS).REST当然是无状态的并且不使用会话,因此API中没有"登录"方法.每个请求都需要再次授权.

在这个REST服务器上,我们构建了一个AngularJS客户端.这是一个单页面应用程序.当用户登录到客户端时,客户端将存储凭据并确保设置了正确的HTTP标头.

"问题"是当用户刷新浏览器时,应用程序将失去其状态,包括身份验证凭据.

处理这个问题的最佳方法是什么?AngularJS应用程序如何让用户登录/记住凭据?无论解决方案是什么,它都必须是安全的,因为它是一个银行应用程序.

rest http basic-authentication angularjs

13
推荐指数
1
解决办法
7751
查看次数

mp4 atom - 如何区分音频编解码器?是AAC还是MP3?

我正在研究一个mp4容器解析器,但是我疯狂地试图识别流的音频编解码器.我使用了QtAtomViewer和AtomicParsley,但是当我找到原子时:

trak-> mdia-> minf-> stbl-> STSD

即使mp4文件有mp3流,我也总是"mp4a".

我应该找一个".mp3"fourcc吗?

我附加了两个不同的mp4结构:带有AAC音频流的mp4容器

     Atom trak @ 716882 of size: 2960, ends @ 719842
     Atom tkhd @ 716890 of size: 92, ends @ 716982
     Atom mdia @ 716982 of size: 2860, ends @ 719842
         Atom mdhd @ 716990 of size: 32, ends @ 717022
         Atom hdlr @ 717022 of size: 33, ends @ 717055
         Atom minf @ 717055 of size: 2787, ends @ 719842
             Atom dinf @ 717063 of size: 36, ends @ 717099
                 Atom …
Run Code Online (Sandbox Code Playgroud)

audio mp4 codec

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

级联验证不在表单的第三层上工作

我有一个3层的表单:First Layer是游戏的容器:

class GameListType extends AbstractType {

    public function buildForm(FormBuilderInterface $builder, array $options) {
        $builder->add('games', 'collection', array(
            'required' => false,
            'allow_add' => true,
            'prototype' => true,
            'by_reference' => false,
            'type' => new GameBetType(),
        ))
        ;
    }

    public function setDefaultOptions(OptionsResolverInterface $resolver) {
        parent::setDefaultOptions($resolver);
        $resolver->setDefaults(array(
            'cascade_validation' => true,
        ));
    }  
}
Run Code Online (Sandbox Code Playgroud)

第二层是游戏本身,因为我不打算改变游戏,但是赌注,它只包括赌注的形式:

class GameBetType extends AbstractType {

    public function buildForm(FormBuilderInterface $builder, array $options) {   
        $builder->add('bet', new BetType());
    }

    public function setDefaultOptions(\Symfony\Component\OptionsResolver\OptionsResolverInterface $resolver) {
        parent::setDefaultOptions($resolver);
        $resolver->setDefaults(array(
            'data_class' => 'Strego\TippBundle\Entity\Game',
            'cascade_validation' => true,
        )); …
Run Code Online (Sandbox Code Playgroud)

php symfony-forms symfony symfony-2.1

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

Scala展平列表

我想编写一个平滑List的函数.

object Flat {
  def flatten[T](list: List[T]): List[T] = list match {
    case Nil => Nil
    case head :: Nil => List(head)
    case head :: tail => (head match {
      case l: List[T] => flatten(l)
      case i => List(i)
    }) ::: flatten(tail)
  }
}

object Main {
  def main(args: Array[String]) = {
    println(Flat.flatten(List(List(1, 1), 2, List(3, List(5, 8)))))
  }
}
Run Code Online (Sandbox Code Playgroud)

我不知道为什么它不起作用,它返回List(1, 1, 2, List(3, List(5, 8)))但应该是List(1, 1, 2, 3, 5, 8).

你能给我一个提示吗?

functional-programming scala

12
推荐指数
3
解决办法
8541
查看次数