小编Nat*_*han的帖子

Jackson:如何在 JSON 序列化中包含 null 值属性

我正在尝试使用我自己的 Java 实体类和 Jackson 注释来生成 JSON 响应。null我的 JSON 响应中必须有两个键值,但如果我将它们设置为它们null,它们就会从 JSON 中消失。不幸的是,我只能使用 Jackson 版本 1.9.13。

我已经尝试将值设置为null,使用

@JsonSerialize(include = JsonSerialize.Inclusion.ALWAYS)
Run Code Online (Sandbox Code Playgroud)

我的响应实体:

public class Response {

@JsonProperty("data")
private Data data;

@JsonProperty("error")
private Error error;

public Data getData() {
    return data;
}

public void setData(PgSoftAuthData data) {
    this.data = data;
}

public Error getError() {
    return error;
}

public void setError(PgSoftError error) {
    this.error = error;
}
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试生成这样的响应:

Data data = new Data();
data.setName("Name");
data.setTime(null); // This …
Run Code Online (Sandbox Code Playgroud)

java null response jackson

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

获得JPopupMenu的位置

我在找到JPopupMenu位置时遇到了麻烦.

我需要的是能够右键单击工作区,点击一些
菜单项,然后创建一个元素来代替正确的先前显示的菜单的位置下.

我试着获取菜单本身及其项目的位置,
但它给了我大约0的常量值.(参见代码中的注释)

由于关注点分离,菜单显示在一个类中,
而其操作在另一个类中处理.

public final class MainFrameMenu
    extends JPopupMenu
    implements ActionListener {

  private final MainFrame mainFrame;
  private final JMenuItem item1 = new JMenuItem("add line");
  private final JMenuItem item2 = new JMenuItem("add element");

  public MainFrameMenu(MainFrame mainFrame) {
    super("Main menu");
    this.mainFrame = mainFrame;

    item1.addActionListener(this);
    item2.addActionListener(this);

    add(item1);
    add(item2);
  }

  @Override
  public void actionPerformed(ActionEvent e) {
    if (e.getSource() == item1) {
      System.out.println(getLocation()); // gives ALWAYS [0, 0]
      System.out.println(item1.getLocation()); // gives …
Run Code Online (Sandbox Code Playgroud)

java usability user-interface swing

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

哪个侦听器可以知道JTextPane值已更改?

我想知道JTextPane内容何时发生变化.我实现了一个键盘监听器,但它只检测键盘事件.如果用户通过鼠标粘贴文本或将文本拖入内部,那么我不会启用检测JTextPane值的更改.哪个事件监听器可以告诉我JTextPane值已更改?

java events swing jtextpane

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

将ActionListener添加到JTable的列标题

是否可以添加ActionListener到列标题JTable.

这是我的桌子我的桌子图片

现在,我想的添加ActionListener到列标题(例如WQE,SDM)我想是能够显示在另一个窗口中列描述.

java swing jtable actionlistener jtableheader

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

Java Process.exitValue()中值的含义是什么?

我使用Processvia ProcessBuilder来运行用C代码生成的可执行文件.我正在抓住Process.exitValue()这个退出值的反应.我注意到并非所有退出值都来自可执行文件.例如,我得到退出值139并且在我的C代码中没有任何地方返回139的退出值.

我试图找到退出值的概述,但我找不到这个,现在我发现退出值可以取决于操作系统.(我顺便使用Ubuntu).

一切顺利的时候,唯一可以肯定的退出值是0.是否有关于退出值的规范?我可以确定某个范围只能用于我自己的程序吗?为操作系统保留了哪些退出代码.

我发现139可能是C代码中的内存错误.我想摆脱可能.我无法获得退出值的任何概述(例如139 = .....)

这是简化的代码:

ProcessBuilder p = new ProcessBuilder(executableName,
   executableArguments);
final Process shell = p.start();
InputStream shellIn = shell.getInputStream();
int shellExitStatus = shell.exitValue();
Run Code Online (Sandbox Code Playgroud)

注意:在Ubuntu shell中运行C可执行文件根本不会产生任何错误(即退出值0).但是,在Java中执行相同的命令会退出值139.

java process exit-code

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

如何在Java Jersey中获取HTML Checked Checkbox

我正在使用Jersey Java Framework将数据从HTML表单发送到Java RESTful Web服务.我需要知道在该表单中检查了哪些复选框(具有不同的名称和用途).我在网络服务中试过这个:

package com.myexample;

import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import com.sun.jersey.multipart.FormDataParam;

@Path("/service")
public class MyService{

    @POST
    @Path("/formData")
    @Produces(MediaType.TEXT_HTML)
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    public String formData(@FormDataParam("myInputbox") String myInputbox, @FormDataParam("myCheckbox") String myCheckbox){
        return "Now I get: <br/>Inputbox: " + myInputbox + "<br/>Checkbox: " + myCheckbox;
    }
}
Run Code Online (Sandbox Code Playgroud)

发件人表单是这样的:

<html>
    <head>
        <title>Send a checkbox</title>
    </head>
    <body>
        <form method="post" action="http://localhost:8080/Example/rest/service/formData" enctype="multipart/form-data">
            <input type="checkbox" name="myCheckbox">This is my checkbox
            <input type="text" name="myInputbox" value=""/>
            <input type="submit" value="Send data"/>
        </form>
    </body> …
Run Code Online (Sandbox Code Playgroud)

html java rest checkbox jersey

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

如何注释数组NonNull?

我正在使用org.eclipse.jdt.annotation.NonNull为静态空值分析添加额外信息.我不知道如何正确地注释数组:

  1. 我怎么能说数组引用是非空的?
  2. 我怎么能说数组由非null元素组成?

我测试过:

    public static void test(@NonNull String[] a) {
        assert a != null;
    }

    public static void main(String[] args) {
        test(null);
    }
Run Code Online (Sandbox Code Playgroud)

但是,Eclipse没有标记test(null);为错误.

java eclipse non-nullable

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

如果字段注释,请保留构造函数

我有以下课程.

public class StatusCategory
{
   @JsonProperty("key")
   private final String m_key = null;

   public String getKey()
   {
      return(m_key);
   }
}
Run Code Online (Sandbox Code Playgroud)

什么是-keep确保Proguard不会删除构造函数的选项?

以下将保留构造函数; 但是,我不想指定每个类或包.

-keep class oracle.psr.ndr.jira.api.StatusCategory {<init>;}
Run Code Online (Sandbox Code Playgroud)

java proguard

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

如何在网页中查找 JavaScript 源代码?

我想检查 网页中 JavaScript 函数的源代码

在 Firefox Inspector 中,我点击了 在此输入图像描述

我懂了:

<a href="/thread/7629335?start=75&amp;tstart=0" title="last" onclick="jspaginate.init('last', '6'); return false;" class="js-pagination-next j-paginate-last">last</a>
Run Code Online (Sandbox Code Playgroud)

我想找到源jspaginate.init。我单击了“调试器”选项卡,但没有看到jspaginate.init. 来源应该在页面上的某个地方,不是吗?

我在 Mac OS 10.10.5 中运行 Firefox 48.0。我在督察里。 在此输入图像描述

html javascript firefox web-inspector

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

如何在不增加圈复杂度的情况下覆盖等于?

我最近覆盖了equals我最近的Java项目的域对象中的一些方法.当我们使用Sonar计算我们的代码度量时,我立即看到这些类的圈复杂度增加到阈值以上.

我想知道是否有一种聪明的方式,模式或选项可以保持这个指标低,尽管有一些更复杂的equals方法.

编辑:这是我的一个例子,我没有具体说明,只是为了让我们知道我们在谈论什么.

@Override
public boolean equals(Object o) {
  if (o instanceof MyKey) {
  MyKey other = (MyKey) o;
  if (this.foo.longValue() == other.getFoo().longValue() &&
    this.bar.equalsIgnoreCase(other.getBar()) &&
    this.foobar.shortValue() == other.getFoobar().longValue()){
    return true;
    }
  }
  return false;
}

@Override
public int hashCode() {
  int hash = 3;
  hash = 53 * hash + foo.hashCode();
  hash = 53 * hash + bar.hashCode();
  hash = 53 * hash + foobar.hashCode();
  return hash;
}
Run Code Online (Sandbox Code Playgroud)

java overriding equals

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