小编Rob*_*son的帖子

Kotlin Destructuring when/if声明

所以我有一个字符串,我想检查是否应分成两部分,或返回一些默认值.像这样:

val myString = "firstPart-secondPart"
val (first, second) = when (myString.contains("-")) {
        true -> myString.split('-', limit = 2)
        else -> ?? <-- How would i return ("Default1", "Default2") so the destructuring still works?
}
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,我如何返回两个默认字符串,以便解构工作?我之前用过的String.split()是为了解构而且非常好.

java string kotlin

11
推荐指数
2
解决办法
598
查看次数

Spring RestTemplate遵循cookie重定向

最近我遇到了一个问题,我需要向GET远程服务请求(使用我假设的简单servlet),并返回RestTemplate Too many redirects!.

经过一番调查后,似乎对指定的远程服务发出的第一个请求实际上只是一个带有一些Set-Cookie头文件的302重定向(自身).如果我使用的是"普通"浏览器,它会确认标题,正确设置Cookie,并按照重定向进行正常的200响应.

我发现RestTemplate不接受Set-Cookie标题,所以重定向一遍又一遍.

有没有办法让RestTemplate确认Set-Cookie标题,仅针对当前请求?我最好不要让它保持状态,因为RestTemplate也是从系统的其他部分使用的.

问候

java rest integration spring resttemplate

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

从实例中获取TypeScript枚举名称

我有以下TypeScript枚举:

enum Country {
    BR = "Brazil",
    NO = "Norway"
}
Run Code Online (Sandbox Code Playgroud)

然后想象我有一个方法,它接受一个Country参数,如下所示:

someFunc = (country: Country): void => {
    console.log(country) //Will print "Brazil" if country = Country.BR
    console.log(Country[country]) //Same as above
    console.log(???) //I want to print "BR" if country = Country.BR
}
Run Code Online (Sandbox Code Playgroud)

我该如何解决第三个console.log陈述?

如何获得枚举密钥?

问候

javascript enums typescript reactjs

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

JSP/page中的Spring MVC Controller类名

我有一个问题,一个我需要尽快解决的问题......在解决这个问题的过程中我已经解决了一些问题.

请参阅,我需要从JSP页面显示当前服务的Spring Controller.该名称不必在JSP本身中进行解析,我实际上正在使用另一个类(一种taglibrary)在任何页面的底部显示此信息.

有没有办法从外部类获取控制器名称?(当我在外面说时,我的意思是来自另一个类而不是控制器本身.)也许是从请求中得到了什么?(或者一些Spring Security请求属性?).也许是一个拦截器?

我想避免从控制器扩展一个类来解决这个问题.

任何建议都是适当的!

java spring jsp servlets spring-mvc

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

npm install 以获取标签版本的依赖关系

长话短说:

我的项目依赖于"dep": "snapshot"“快照”是标签的位置。运行npm install不会获取新版本的“dep”。

完整故事:

所以最近我开始了一个 JS 项目,并且......长话短说,我通过本地安装的 Nexus 设置了自己的私人存储库。让我们称我的项目为myProj1

.npmrc像这样添加了 Nexus 注册表:

registry=http://nexus:8081/nexus/content/groups/npm-all/

一切都很好,我尝试在发布任何生产就绪代码之前发布快照版本。这包括运行npm-snapshot X,其中 X 是我的快照编号。(它基本上是一个将版本标签更改package.json为类似1.0.0-SNAPSHOT.24(如果 X = 24)的插件

然后我跑

npm publish --tag=snapshot --registry=http://nexus:8081/nexus/content/npm-internal

它将代码推送到我的 Nexus,一切看起来都很好。我的 Nexus 注册表中的标签“快照”已更新为最近发布的版本。(1.0.0-快照.24)

然后我有另一个项目,它依赖于上述模块,其package.json指定如下:

"dependencies": {
    "myProj1": "snapshot"
}
Run Code Online (Sandbox Code Playgroud)

所以我npm install在项目根目录中运行,你瞧,依赖项已完美下载,一切都很棒!

现在我的问题来了:

然后我决定更新 中的一些内容myProj1,使我使用上面相同的命令发布另一个快照版本。(导致新发布的工件被版本控制1.0.0-SNAPSHOT.25)我的 Nexus 非常棒,并且像它应该的那样发布了新的依赖项,还将 dist 标签“快照”更新为新构建的版本。

然而,当我从其他项目运行时npm install,相信我应该获得更新版本的myProj1,什么也没有发生。它不会获取较新的快照版本。为什么?

我是否误解了对 dist 标签的依赖?我可以用其他方式做到这一点吗?

问候

javascript nexus sonatype node.js npm

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

选择时间戳大于时区的位置

假设我有这个表结构:

                          Table "test"
     Column     |            Type             | Modifiers
----------------+-----------------------------+-----------
 uuid           | uuid                        | not null
 created        | timestamp without time zone | not null
Run Code Online (Sandbox Code Playgroud)

如何选择某个日期后的记录?但还要考虑特定时区?

由于created是没有区域的时间戳,我们可以假设它是UTC

示例查询:

select uuid from test where created >= '2017-07-20'

这将返回发生在或之后的所有事件2017-07-20 00:00:00.000 UTC我将如何查询发生在说之后的事件2017-07-20 00:00:00.000 GMT+2?无需在我的论点中增加数小时created > arg

sql postgresql

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

跨越多个存储库的Spring数据事务

我需要使用同一事务将2个不同的实体插入2个不同的表中。如果第二个插入失败,则应回滚第一个。

有什么办法可以很好地做到这一点?

伪代码:

start tx
repo1.save(myEntity);
repo2.save(anotherEntity);
try commit
Run Code Online (Sandbox Code Playgroud)

我知道您可以利用,@Transactioal但只能在方法级别使用?

java spring hibernate spring-data

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

记录可选键值

我有这个Web应用程序,日志记录非常繁重。我们已经实现了MDC对每个请求线程的调用,以便能够在日志中跟踪用户。

日志消息可能如下所示:

INFO  [2017-10-09 10:10:55,841] user_uuid=123-123-123 com.myapp.SomeClass: Some log message...
Run Code Online (Sandbox Code Playgroud)

现在的问题是,在大多数情况下,没有当前用户,并且user_uuid在上面的日志示例中,我们没有使用该字段。因此,它看起来像这样:

INFO  [2017-10-09 10:10:55,841] user_uuid= com.myapp.SomeClass: Some log message...
Run Code Online (Sandbox Code Playgroud)

如果没有MDC值,是否有任何方法不将MDC密钥和值写入日志?我还没有找到某些日志格式?

如果找不到MDC值,我希望它看起来像这样:

INFO  [2017-10-09 10:10:55,841] com.myapp.SomeClass: Some log message...
Run Code Online (Sandbox Code Playgroud)

上面的(MDC)示例配置如下:

%-5p [%d{ISO8601,UTC}] user_uuid=%mdc{user_uuid:-} %c: %m%n%rEx
Run Code Online (Sandbox Code Playgroud)

java logging logback slf4j

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

找不到TomEE数据源

关于TomEE和使用tomee.xml中指定的数据源,我有一个奇怪的问题。可能值得注意的是,我正在使用Netbeans,TomEE和MySQL。在Ubuntu 13.04上运行(最新的Xubuntu)

tomee.xml文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<tomee>
    <Resource id="booktablesDS" type="DataSource">
        JdbcDriver com.mysql.jdbc.Driver
        JdbcUrl jdbc:mysql:localhost:3306/book_tables
        UserName juser
        Password jpassword
        JtaManaged true
    </Resource>
</tomee>
Run Code Online (Sandbox Code Playgroud)

和一个小的代码片段,测试连接池:

@Resource DataSource booktablesDS;

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        try {

    Connection c = booktablesDS.getConnection();
    Statement stmt = c.createStatement();
    ResultSet rs = stmt.executeQuery("SELECT * FROM BOOKS");
Run Code Online (Sandbox Code Playgroud)

我从TomEE获得的输出是:

SEVERE: null
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
Run Code Online (Sandbox Code Playgroud)

完整的堆栈跟踪如下。

May 06, 2013 11:08:53 AM org.apache.catalina.util.LifecycleBase start
INFO: The start() method …
Run Code Online (Sandbox Code Playgroud)

java netbeans ejb jdbc apache-tomee

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