小编red*_*ead的帖子

两个指令共享同一个控制器

有以下指令

function directive() {
    return {
        template: '{{foo.name}}',
        controller: ctrl,
        controllerAs: 'foo'
    }
}

function ctrl($attrs) {
    this.name = $attrs.name;
}
Run Code Online (Sandbox Code Playgroud)

这在模板中:

<directive name="1" />
<directive name="2" />
Run Code Online (Sandbox Code Playgroud)

为什么我看到以下输出:

2
2
Run Code Online (Sandbox Code Playgroud)

代替

1
2
Run Code Online (Sandbox Code Playgroud)

angularjs angularjs-directive

9
推荐指数
1
解决办法
5484
查看次数

如何格式化ng中的数字:复数

如何通过attribtute'count'格式化传入ng:pluralize指令的数字?

考虑以下代码:

<ng:pluralize count="5000000" when="{'other': '{} things'}"></pluralize>
Run Code Online (Sandbox Code Playgroud)

输出是:

5000000 things
Run Code Online (Sandbox Code Playgroud)

如何修改输出为:

5,000,000 things    // in US locale
5 000 000 things    // in Czech locale
Run Code Online (Sandbox Code Playgroud)

我尝试使用过滤器'数字',但我想我不知道在哪里放它.它在传递给属性'when'的对象中不起作用.我试过这些:

... when="{'many': '{{{}|number}} things'}"
... when="{'many': '{}|number things'}"
... when="{'many': '{|number} things'}"
Run Code Online (Sandbox Code Playgroud)

angularjs

8
推荐指数
1
解决办法
5211
查看次数

IntelliJ Idea远程调试器挂起

当我在IntelliJ中使用远程调试器来调试服务器上的Java应用程序时,它会在断点上成功停止,但是当我尝试评估任何表达式或变量时,它会挂起并且不显示任何内容(通常使用"收集数据"消息).从那时起,我甚至无法继续单步执行代码.我必须单击resume以使其至少运行,但它将永远不会停在其他断点处,直到我重新启动调试会话,通常甚至是正在调试的Java应用程序.

我可以在断点停止后逐步执行代码,同时我在调试器面板中看到变量,当我尝试评估表达式或添加观察者时,它只会开始表现得很奇怪.然后它停止工作并重新启动调试器并且需要应用程序.

有没有人经历类似的事情?是IntelliJ还是服务器问题?

(抱歉这个含糊不清,但我不知道要分享什么或者问题可能是什么)

java remote-debugging intellij-idea

8
推荐指数
1
解决办法
1293
查看次数

登录后错误的重定向(Java EE w/JSF)

使用JSF在Java EE中开发Web应用程序.通过身份验证表单查看所有页面,并使用操作'j_security_check'并输入'j_username'和'j_password'.

但是,在成功登录后,我被重定向到我想要访问的页面,而不是该URL

/faces/javax.faces.resource/jsf.js?ln=javax.faces&stage=Development
Run Code Online (Sandbox Code Playgroud)

所以我正在查看脚本文件jsf.js,其中包含所有JS代码,而不是我想要查看的页面.如果我访问Web根目录或任何其他页面并不重要,我每次都会被重定向到此URL.然后我将URL更改为任何页面,它加载它很好,我登录.

我不得不说我已经遇到了这个神奇地消失的问题所以它正确地重定向了我.几个星期后,它再次被打破,但如果这是我的错,我不会,如果是,我不知道原因.我根本没有搞乱重定向或导航规则.

很高兴提到我也在使用PrettyFaces.

编辑:

<security-constraint>
    <display-name>secured</display-name>
    <web-resource-collection>
        <web-resource-name>all</web-resource-name>
        <description/>
        <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <description/>
        <role-name>admin</role-name>
        <role-name>teacher</role-name>
    </auth-constraint>
</security-constraint>
<security-constraint>
    <display-name>secured for admins</display-name>
    <web-resource-collection>
        <web-resource-name>admin pages</web-resource-name>
        <description/>
        <url-pattern>/admin/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <description/>
        <role-name>admin</role-name>
    </auth-constraint>
</security-constraint>
<security-constraint>
    <display-name>unsecured</display-name>
    <web-resource-collection>
        <web-resource-name>css</web-resource-name>
        <description/>
        <url-pattern>/css/*</url-pattern>
    </web-resource-collection>
    <web-resource-collection>
        <web-resource-name>js</web-resource-name>
        <description/>
        <url-pattern>/js/*</url-pattern>
    </web-resource-collection>
    <web-resource-collection>
        <web-resource-name>img</web-resource-name>
        <description/>
        <url-pattern>/img/*</url-pattern>
    </web-resource-collection>
</security-constraint>
<login-config>
    <auth-method>FORM</auth-method>
    <realm-name>wetk-security</realm-name>
    <form-login-config>
        <form-login-page>/faces/login.xhtml</form-login-page>
        <form-error-page>/faces/login.xhtml</form-error-page>
    </form-login-config>
</login-config>
Run Code Online (Sandbox Code Playgroud)

jsf login java-ee prettyfaces

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

没有 @DirtiesContext 的 Camel 集成 spring 测试

当我将骆驼路由处理的集成测试作为独立测试运行时,它通过了。当我运行所有测试时,它失败并出现预期值的断言错误。当我将 @DirtiesContext 添加到抽象测试类时,它们都通过了。

我检查了文档并超出了下面的段落,他们没有说明为什么实际上需要@DirtiesContext,以及不使用时会出现什么问题。

请注意,我们在测试方法上使用@DirtiesContext来强制Spring测试在每个测试方法之后自动重新加载CamelContext - 这确保了测试不会相互冲突(例如,一个测试方法发送到一个端点,然后在另一种测试方法)。

问题是,一次又一次地创建 Spring 上下文非常耗时。我们所有其他非骆驼集成测试都在没有@DirtiesContext(使用@Transactional)的情况下通过,我们希望继续这样做。

有没有一种方法可以将camel置于原始状态而不重新创建整个spring上下文,以便测试的MockEndpoints按预期工作?

spring apache-camel spring-test

7
推荐指数
0
解决办法
729
查看次数

包装上的条件ComponentScan

在Spring Boot应用程序中,我有一个包含Application类的包

@SpringBootApplication
class Application {

    public static void main(String[] args) {
        SpringApplication application = new SpringApplication(Application);
        application.run(args);
    }

}
Run Code Online (Sandbox Code Playgroud)

默认情况下,它会自动从该类的包中设置ComponentScan.然后我有几个子包,每个子包包含几个组件和服务bean(使用注释).但是为了针对不同的用例重用此应用程序,我需要启用/禁用某些子包中的所有组件,最好是通过属性.

那就是我喜欢的子包

org.example.app.provider.provider1
org.example.app.provider.provider2
Run Code Online (Sandbox Code Playgroud)

现在,基于某些属性,我想在其中一个包中启用(扫描)bean,例如

provider1.enabled=true
Run Code Online (Sandbox Code Playgroud)

我以为我可以让Configuration类上的ConditionalOnProperty像这样工作,但问题是,bean是由默认的@SpringBootApplication组件扫描拾取的(即子包配置类不会覆盖顶级组)

所以我认为我会排除这些包,但是当需要新的提供程序包时,这会增加更多的工作(和知识)(需要提前知道为该包添加显式排除).

有没有其他方法如何做到这一点我无法弄清楚?

spring spring-boot

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

IntelliJ IDEA不会重新部署更改

我有一个Spring Web应用程序,当我在Tomcat中使用IDEA的调试器进行调试并在进行一些更改后重新部署项目时,这些更改未部署,调试器“看到”了旧代码(逐步输入错误或空白行)。唯一有用的是运行maven全新安装,然后再次启动Tomcat。

我试图清除IDEA缓存,但没有帮助。

尽管我在设置中选择了正确的选项,但是Hotswap也不起作用,但是我可以接受。

请注意,我使用的是redeploy而不是hotswap,因此整个应用程序都将重新启动,它应该重新加载所有类,但不会重新加载。只有在Maven构建之后,它才能起作用。

注意2:我认为它可以在一个月前正常运行,但是我认为没有任何变化可以做到这一点(在项目或IDEA方面)

编辑:因此,热交换现在可以正常工作了(魔术上,我什么也没做)。但是,当我进行较大的修改(例如,方法签名更改等)时,它们在REDEPLOY到服务器期间不会被接收。因此,我需要运行maven clean install并再次启动服务器,以查看更改,并在对新代码修改方法主体之后,使热插拔正常工作。知道为什么吗?

java tomcat intellij-idea maven

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

Webpack,提取文本插件以及图像和字体资源的相对路径

在webpack中,我需要将捆绑的CSS文件提取到与我的JS文件不同的文件夹中,同样适用于图像和字体.结果应该是:

build/
    js/
        bundle.js
    styles/
        css/
            bundle.css
        fonts/
            ...
    images/
        ...
Run Code Online (Sandbox Code Playgroud)

我尝试了很多webpack配置的组合,但我无法生成这个文件结构,同时在CSS文件中生成正确的相对URL.

我最终得到了这个配置:

var ExtractTextPlugin = require('extract-text-webpack-plugin');

var appCssExtractPlugin = new ExtractTextPlugin('styles/css/styles.css');

module.exports = {
    entry: {
        app: __dirname + '/src/client/app/bootstrap.js',
    },
    output: {
        path: __dirname + '/build',
        publicPath: '',
        filename: 'js/bundle.js'
    },
    module: {
        loaders: [
            {
                test: /\.js$/,
                exclude: /(node_modules|bower_components|sc\.js$)/,
                loaders: ['ng-annotate', 'babel?presets[]=es2015']
            },
            {
                test: /\.scss$/,
                exclude: /(node_modules|bower_components)/,
                loader: appCssExtractPlugin.extract([], ['css', 'resolve-url', 'sass'])
            },
            {
                test: /\.html$/,
                loader: 'html'
            },
            {
                test: /\.(jpg|jpeg|gif|png)$/,
                loader: 'url?limit=10000&name=[name].[ext]?[hash]'
            },
            { …
Run Code Online (Sandbox Code Playgroud)

webpack

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

如何在kotlin DSL构建器中创建字段

在Kotlin中,在创建自定义DSL时,在编译时强制填充构建器扩展函数中的必需字段的最佳方法是什么.例如:

person {
    name = "John Doe" // this field needs to be set always, or compile error
    age = 25
}
Run Code Online (Sandbox Code Playgroud)

强制它的一种方法是在函数参数中设置值,而不是扩展函数的主体.

person(name = "John Doe") {
    age = 25
}
Run Code Online (Sandbox Code Playgroud)

但如果有更多必填字段,那就更难以理解了.

还有其他方法吗?

kotlin

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

交易开始时的监听器

我正在寻找一个干净的解决方案来监听事务启动。这意味着我希望侦听器成为 spring 上下文中的一个 bean(组件),它将在新事务启动时从 TransactionPlatformManager 或 Hibernate Session 或类似的东西接收事务启动事件。

沿途的一些东西:

@Component
class TransactionListener implements ?? {

    @Autowired
    private Something x;

    public void onTransactionBegin(...) {
        x.doSomething()
    }

}
Run Code Online (Sandbox Code Playgroud)

具体来说,我正在缓解系统范围的问题,并且我需要在事务开始时设置一个本地线程,这样我就可以在处理休眠实体时进一步访问该本地线程以检索信息。

我查看了来源,没有发现任何可以实现此类监听器的痕迹。我发现的唯一解决方案是子类化 HibernateTransactionManager 及其 doBegin() 方法,我觉得这不是特别好。

java spring hibernate hibernate-session spring-transactions

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

使用泛型类时lambda使用者参数的未知类型

我有一个类似于下面的代码,由于某种原因,当我调用一个Consumer<BigDecimal>带有lambda参数的方法时,lambda参数是类型Object而不是BigDecimal.如果BigDecimal调用lambda param的任何方法,则会导致lambda 中的"无法解析方法" .只有当采用消费者的方法属于泛型类时,才会发生这种情况,但非泛型参与者采用这种消费者方法.

public class Creator<T> {

    private T something;

    private Consumer<BigDecimal> consumer;

    public Creator(T something) {
        this.something = something;
    }

    public void create(Consumer<BigDecimal> consumer) {
        this.consumer = consumer;
    }

}

public class Processor {
    public void process(Creator creator) {
        creator.create(big -> big.abs());
                                  ^^^^^-------------------- Cannot resolve method
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我<T>从Creator类中删除泛型参数,它就可以工作,即使泛型不接触该create()方法

这有什么问题?

java generics lambda java-8

0
推荐指数
2
解决办法
542
查看次数