小编obe*_*ies的帖子

如何在Java中将Calendar转换为java.sql.Date?

Calendar cal;
String sql = "INSERT INTO ttable (dt) values (?);"
//dt is a dateTime field in ttable

PreparedStatement stmt = connection.prepareStatement(sql);

stmt = setDate(1,cal); //not working

stmt.execute();
stmt.close();
Run Code Online (Sandbox Code Playgroud)

我想将cal转换为Date类型以插入表中.

java sql calendar

57
推荐指数
5
解决办法
18万
查看次数

什么是互操作dll?

我需要一些澄清.我有一个使用Crystal Reports的Reportwriter dll.它是用VB6编写的.我必须将这个dll添加到我的asp.net项目中,它创建一个interop dll.

根据我的理解,interop dll作为中介,以便我的.net代码可以与Reportwriter dll通信.

那么我注册interop dll还是注册原始dll?

asp.net interop crystal-reports

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

带有命名参数的本机查询失败,并且"未设置所有已命名的参数"

我想执行一个简单的本机查询,但它不起作用:

@Autowired
private EntityManager em;

Query q = em.createNativeQuery("SELECT count(*) FROM mytable where username = :username");
em.setProperty("username", "test");
(int) q.getSingleResult();
Run Code Online (Sandbox Code Playgroud)

为什么我得到这个例外?

org.hibernate.QueryException: Not all named parameters have been set: [username]
Run Code Online (Sandbox Code Playgroud)

java hibernate jpa

49
推荐指数
6
解决办法
10万
查看次数

如何通过JUnit测试拦截SLF4J日志记录?

是否有可能以某种方式拦截日志记录(SLF4J + logback)并InputStream通过JUnit测试用例获取(或其他可读的内容)......?

java junit logback slf4j

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

在Java Servlet应用程序中为HTTP 201响应设置Location标头的正确方法是什么

请考虑以下代码向客户端发送HTTP 201"创建"响应:

    String url = "/app/things?id=42"; // example
    response.setStatus(HttpServletResponse.SC_CREATED);
    response.setContentType("text/plain");
    response.setHeader("Location", url);
    response.getWriter().print(url);
Run Code Online (Sandbox Code Playgroud)

它通知客户端创建了一个新的"东西",并且可以在URL上找到它/app/things?id=42.问题是这个URL是相对的.这对于JSP来说是完美的,可以写成如下:

<img src="<c:url value="/things?id=42" />" />
Run Code Online (Sandbox Code Playgroud)

哪个会产生以下HTML:

<img src="/app/things?id=42" />
Run Code Online (Sandbox Code Playgroud)

这是我们想要的网络应用程序.

但我不相信这是我们想要的201响应位置标题.HTTP规范声明:

14.30位置

Location response-header字段用于将收件人重定向到Request-URI以外的位置,以完成请求或标识新资源.对于201(已创建)响应,Location是请求创建的新资源的位置.对于3xx响应,位置应该应该指示服务器自动重定向到资源的首选URI.字段值由单个绝对URI组成.

       Location = "Location" ":" absoluteURI
Run Code Online (Sandbox Code Playgroud)

一个例子是:

       Location: http://www.w3.org/pub/WWW/People.html
Run Code Online (Sandbox Code Playgroud)

我的问题是如何以适当的方式将servlet的相对URL转换为Location头的绝对URL.

我不相信使用:

request.getServerName() + ":" + request.getServerPort() + url;
Run Code Online (Sandbox Code Playgroud)

是正确的解决方案.应该有一个生成正确输出的标准方法(以便可以应用URL重写等).我不想创建一个hack.

java servlets http httpresponse http-headers

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

使用Jackson序列化/反序列化Map <String,Object>

我有一个如下所示的课程

public class MyClass {
   private String val1;
   private String val2;
   private Map<String,Object> context;
   // Appropriate accessors removed for brevity.
   ...
}
Run Code Online (Sandbox Code Playgroud)

我希望能够与杰克逊一起往返于JSON并返回.我可以序列化上面的对象并收到以下输出:

{
    "val1": "foo",
    "val2": "bar",
    "context": {
        "key1": "enumValue1",
        "key2": "stringValue1",
        "key3": 3.0
    }
}
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,由于序列化映射中的值没有任何类型信息,因此它们不会正确反序列化.例如,在上面的示例中,enumValue1应该反序列化为枚举值,而是反序列化为String.我已经看到了基于各种类型的基于什么类型的示例,但在我的场景中,我不知道类型是什么(它们将是用户生成的对象,我不会事先知道)所以我需要成为能够使用键值对序列化类型信息.我怎么能和杰克逊一起完成这个?

为了记录,我使用Jackson版本2.4.2.我用来测试往返的代码如下:

@Test
@SuppressWarnings("unchecked")
public void testJsonSerialization() throws Exception {
    // Get test object to serialize
    T serializationValue = getSerializationValue();
    // Serialize test object
    String json = mapper.writeValueAsString(serializationValue);
    // Test that object was serialized as expected
    assertJson(json);
    // Deserialize to complete round …
Run Code Online (Sandbox Code Playgroud)

java spring json jackson

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

Maven中"提供"范围的"可选"依赖项

Maven有时候有点过头了......我创建了一个库,它对slf4j和log4j有可选的依赖.通过可选,我的意思是:

  • 我的库在编译时需要那些日志框架
  • 我的库在运行时不需要它们,但如果它"发现"它们,它将使用它们

目前,我已将该依赖标记为"可选"和"已提供":

<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.16</version>
    <type>jar</type>
    <scope>provided</scope>
    <optional>true</optional>
</dependency>
Run Code Online (Sandbox Code Playgroud)

但是我的一些用户报告了问题,因为他们不需要log4/slf4j.我的依赖是否正确?不幸的是,我发现官方文档有点过于抽象,无法理解这个问题.

log4j dependency-management maven

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

通过Gerrit UI恢复到较旧的补丁集版本?

如果我在Gerrit中有一个更改的多个补丁集版本,似乎我只能提交最新的补丁集版本(因为只有那个有必要的按钮).是否有一种简单的方法来改为使用Gerrit实例上的我的Web浏览器提交相同更改的旧补丁集版本之一?

我知道我可以从我的git客户端获取所需的补丁集版本并将其作为另一个新的补丁集版本推送到顶部,但我想避免在审查和讨论中多次使用相同的补丁集版本.

gerrit

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

也可以使用逗号作为差异中的单词分隔符

如何,为git diff --word-diff 添加单词分隔符?

例如,我希望差异识别出来

function(A,B,C) -> function(A, B, C)
Run Code Online (Sandbox Code Playgroud)

只添加了空格而不是替换整行.

git diff

27
推荐指数
2
解决办法
4842
查看次数

PhantomJS不发送身份验证标头

我正在尝试在PhantomJS中打开一个需要HTTP身份验证的网页.我的脚本基于loadspeed.js示例:

var page = require('webpage').create(),
    t, address;
page.settings.userName = "user";
page.settings.password = "password";
if (phantom.args.length === 0) {
  console.log('Usage: loadspeed.js <some URL>');
  phantom.exit();
} else {
  t = Date.now();
  address = phantom.args[0];
  page.open(address, function (status) {
      if (status !== 'success') {
          console.log('FAIL to load the address');
      } else {
          t = Date.now() - t;
          console.log('Loading time ' + t + ' msec');
          page.render('page.jpg');
      }
      phantom.exit();
  });
}
Run Code Online (Sandbox Code Playgroud)

我可以从渲染的page.jpg看到我每次都得到401.我还使用Wireshark跟踪HTTP会话,这表明在给定URL的GET请求中没有发送认证头.

我在这做错了什么?我刚刚开始使用PhantomJS,但我整晚都在寻找并且没有得到太多...

javascript http phantomjs

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