小编Cor*_*han的帖子

Jinja2过滤列表使用字符串包含test

当元素包含一个字符串时,我正试图在Jinja2中过滤ansible中的列表,但是Jinja文档似乎不够清楚,我无法弄明白.

这是我到目前为止:

- name: run script
  command: /usr/tmp/run_script.py
  register: script_results

- name: display run info
  debug:
    var: "{{script_results.stdout_lines | select(\"'running script' in script_results.stdout_lines\") }}"
Run Code Online (Sandbox Code Playgroud)

但我得到的只是错误:

"<generator object _select_or_reject at 0x13851e0>": "VARIABLE IS NOT DEFINED!"
Run Code Online (Sandbox Code Playgroud)

所以例如,如果stdout_lines包含["apples","running script one","oranges","running script two"],我想要打印

running script one
running script two
Run Code Online (Sandbox Code Playgroud)

他们有内置测试的选择文档的文档,但是它们没有显示"in"测试,我不知道它们如何在这个ansible变量的上下文中工作.

我尝试像这样解决它:

- name: display run info
  debug:
    var: item
  with_items: "{{script_results.stdout_lines}}"
  when: "'running script' in item"
Run Code Online (Sandbox Code Playgroud)

但是,对于没有通过测试的每一行显示"跳过"...有点击败目的!

jinja2 ansible ansible-2.x

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

Kotlin数据类继承+复制方法

我从个人经验和讨论中都了解到,当一个data class继承自另一个类的继承的类的字段不包括在数据类的copy函数中。

我对解决此问题的选择感兴趣。

具体来说,我@MappedSuperClass为我的JPA实体有一个JPA data class。在超类中,我设置了实体ID,至少到目前为止,我一直希望以相同的方式进行操作。我可能还需要做其他一些事情,例如设置创建日期,上次更新日期等。

到目前为止,我已经考虑过的选项:

  1. 将ID,创建日期等复制粘贴到每个实体中。优点:简便,复制方法可行。缺点:DRY失败,您无法使用共享的超类处理所有实体。(但是可以为此创建一个接口。)

  2. 覆盖超类的值,并将其传递给超类。

您仍然需要将替代值粘贴到每个实体中,但至少不必复制批注。

@Entity
data class Comment(
        @Lob
        comment: String,

        override val id: Long = -1
) : BaseEntity(id)

@MappedSuperclass
abstract class BaseEntity(
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        open val id: Long = -1
)
Run Code Online (Sandbox Code Playgroud)
  1. ??? 我什至无法想到第三个可行的选择。还有另一种方法吗?将ID设为var并每次创建自定义复制方法?听起来很丑。

inheritance jpa kotlin

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

Android权限限制INSTALL_REFERRER来播放商店

我正在使用自定义分析(而不是谷歌分析)设置广告系列跟踪,并为此设置接收器.我的接收器似乎正在工作,但是当我安装时,我得到一个android lint警告:

ExportedReceiver: Receiver does not require permission
Run Code Online (Sandbox Code Playgroud)

它看起来像任何旧的Android应用程序可以调用我的应用程序与com.android.vending.INSTALL_REFERRER我不想要的意图.它应该只是Google Play商店(或任何其他可以从Play商店安装我的应用程序的Android系统应用程序)将该意图发送到我的应用程序.

所以我试图找出如何设置限制有效应用程序到Play商店的权限,但我无法根据文档找出设置权限的正确方法:

https://developer.android.com/guide/topics/manifest/permission-element.html

有人可以帮我设置一个权限,限制我的应用程序将接受此意图的应用程序从Play商店?这是我目前的接收器配置:

    <receiver
            android:name=".referrals.MyCampaignTrackingReceiver"
            android:enabled="true"
            android:exported="true">
        <intent-filter>
            <action android:name="com.android.vending.INSTALL_REFERRER"/>
        </intent-filter>
    </receiver>
Run Code Online (Sandbox Code Playgroud)

我尝试在normal关卡中设置接收者的权限,但这阻止了应用程序从Playstore接收意图.

android android-intent

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

Spring 3,Hibernate 4.1 Maven 3教程?

我在确定如何配置我的项目以使用Hibernate时遇到了一些困难.我创建了一个使用Spring 3.2和Maven 3的简单webapp.我一直在努力找到一个关于如何将Hibernate 4.1合并到这个项目中的好教程,但似乎找不到一个.

我需要弄清楚如何配置我的spring-servlet.xml文件和我的persistence.xml文件(我想使用JPA规范来运行hibernate.)

Hibernate文档 http://www.hibernate.org/docs 似乎完全没有有用的信息.

http://blog.springsource.org/2012/04/06/migrating-to-spring-3-1-and-hibernate-4-1/ 看起来很有用.我尝试过关注2.B,但它仍然没有解释如何设置persistence.xml,所以...

有人有什么好建议吗?

java spring hibernate jpa maven

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

如何禁用 Spring 安全过滤器

我有一种情况,我有一个 RESTful 服务,它使用预先验证的令牌进行身份验证。我已经实现了自己的 preAuth 过滤器,效果很好。我的问题是,发送到我的服务的某些请求包括不适用于我的应用程序的 BasicAuthorization。(我希望他们没有,他们不应该,但他们做了,我无法控制。)

现在,似乎 Spring Security 自动创建了一个 BasicAuthorization 过滤器,但该过滤器正在捕获这些不相关的身份验证标头,然后抛出错误:

Error 401 No AuthenticationProvider found for org.springframework.security.authentication.UsernamePasswordAuthenticationToken
Run Code Online (Sandbox Code Playgroud)

所以我想关闭我没有在 Spring Security 中使用的过滤器,但我不知道如何。我知道我可以创建虚拟过滤器并替换自动过滤器,或者我可以在应用程序进入过滤器链之前删除所有基本的 Auth 标头,但这些都看起来像黑客。

当我查看 spring 安全过滤器文档时,我找到了向您展示如何添加 FilterChainProxy 的部分,但似乎我必须以这种方式手动创建所有用于 spring 安全的 bean。具体来说,我到了需要 AccessDecisionManager 的部分,但我认为这就是我的

<http use-expressions="true" create-session="stateless"
        authentication-manager-ref="authenticationManager">

        <intercept-url pattern=[etc ...]
Run Code Online (Sandbox Code Playgroud)

东西是为了,我仍然想使用它。有人有什么建议吗?

java spring spring-security

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

在AWS Elastic Beanstalk上使用Single Page App进行Spring Boot需要额外的重定向

我有一个Spring Boot应用程序,其中有一个由Spring Boot本身托管的单页React应用程序(使用React Router v4)。在本地运行时,它可以完美运行。它配置为在端口上运行,5000因此将localhost:5000重定向到我index.html的页面。如果刷新页面,它将刷新页面并显示同一页面。

在AWS Elastic Beanstalk 403上,未授权似乎没有像本地一样自动重定向到我的index.html页面。

通过添加以下内容,我能够在AWS上解决此问题:

@Controller
class ForwardingController : ErrorController {

    companion object {
        private const val ERROR_PATH = "/error"
        private val log = LoggerFactory.getLogger(ForwardingController::class.java)
    }

    override fun getErrorPath(): String = ERROR_PATH

    // This isn't used by the app under normal circumstances, but it is needed on AWS
    @RequestMapping(value = ERROR_PATH)
    fun errorRedirect(response: HttpServletResponse): String {
        log.debug("Redirecting to index.html with error redirect mapping.")
        return "forward:/index.html"
    }
}
Run Code Online (Sandbox Code Playgroud)

我对为什么需要这样做感到困惑。

我为此配置了Spring …

spring amazon-web-services kotlin spring-boot amazon-elastic-beanstalk

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

像 Typescript Partial 这样的 Kotlin 功能?

tl;博士; 什么是最简单的转换方法

data class User(val organization: Organization)

data class UserNullable(val organization: Organization?)

所以我有两个可供选择?

很长的故事:

我正在为我的 Kotlin REST 应用程序编写 Spring Boot 集成测试,但遇到了从 JSON 反序列化的困难。例如,我有一个User类,里面有一个不可为空的类Organization。但有时我想返回一个没有组织的用户,所以我只是不在 Hibernate 中加载组织,它会自动被nullJackson序列化。

在 Typescript 中,有一个叫做的特性Partial,它允许你创建一个类的版本,其中所有的字段都被认为是可以为空的。用 Kotlin 做到这一点最简单的方法是什么?我不想破坏所有实体类的空安全性。我也不想创建整个多余的 DTO 层。

我知道我可以让我的类全部使用late init var而不是构造函数参数vals,但这会消除类的不变性,我也认为这很有价值。

null hibernate jackson kotlin

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

春季“由于未规范化URL,请求被拒绝。” 如何判断使用了什么网址?

我在生产中遇到大量错误

org.springframework.security.web.firewall.RequestRejectedException: The request was rejected because the URL was not normalized.
Run Code Online (Sandbox Code Playgroud)

据推测,这是由//我的网址中的a引起的,但我不知道它们来自何处。我怎么知道是什么URL造成的呢?当您不知道发生了什么时很难修复。

我的确意识到有一个相关的问题,但这并没有解决如何诊断问题URL。它仅解决如何关闭严格的防火墙。

java spring spring-security spring-boot

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

注释属性Min.value的值必须是常量表达式

Eclipse不断给我错误:

The value for annotation attribute Min.value must be a constant expression
Run Code Online (Sandbox Code Playgroud)

但我绝对是给注释一个常数.

private static final int MIN_YEAR = Calendar.getInstance().get(Calendar.YEAR) - 1;

@Min(MIN_YEAR)
Run Code Online (Sandbox Code Playgroud)

如果我改变它

private static final int MIN_YEAR = 2013;
Run Code Online (Sandbox Code Playgroud)

它非常开心,但我不应该这样做.有没有人知道为什么或如何将我的MIN_YEAR常量视为常量,如果它是用一个计算表达式而不是普通数字声明的?

java

4
推荐指数
1
解决办法
4141
查看次数

在 Spring 中添加 Jaxb2 消息转换器会破坏 Jackson2 json 映射

我正在努力使我的 Spring rest 应用程序可以处理 xml 和 json 响应,但似乎添加一个 Jaxb 消息转换器破坏了我的 json 映射。

@Bean
public MappingJackson2HttpMessageConverter jsonConverter() {
    MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
    SimpleModule simpleModule = new SimpleModule();
    simpleModule.addSerializer(String.class, new StringSerializer());
    ObjectMapper mapper = new ObjectMapper()
        .registerModule(simpleModule);
    converter.setObjectMapper(mapper);
    return converter;
}

@Bean
public Jaxb2RootElementHttpMessageConverter jaxbConverter() {
    return new Jaxb2RootElementHttpMessageConverter();
}

@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
    converters.add(jsonConverter());
    converters.add(jaxbConverter());
}
Run Code Online (Sandbox Code Playgroud)

如果我在那里注释掉第二个和第三个方法,一切都会重新开始工作(当然除了 xml 映射!)。但是,在那里,我会搞砸一些事情,例如将List<String>结果序列化为[APPLEORANGEBANANA],其中苹果、橙子和香蕉在列表中是单独的字符串。

如果我直接使用 jackson 对象映射器映射到 json,它没有那个问题,但是使用@ResponseBody注释自动序列化为 json 我有这个问题。

谁有想法?

java xml spring json

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