小编Sot*_*lis的帖子

默认情况下,对布尔字段的JSON Post请求发送为false

您好我正在使用FireFox RestClient发送JSON Post请求.

我的JSON请求如下:

 { "firstName": "Test", "lastName": "1", "isActive": 1 }
Run Code Online (Sandbox Code Playgroud)

我的POJO具有isActive字段如下

  private boolean isActive;
Run Code Online (Sandbox Code Playgroud)

我的控制器定义如下

@RequestMapping(method = {RequestMethod.POST, 
                                 RequestMethod.PUT}, value = "/save")
public ResponseEntity<RestResponse> save(
      @RequestBody POJOUserDetails userDetails, WebRequest request){
Run Code Online (Sandbox Code Playgroud)

在我的POJO中,当我检查isActive的值时,无论发送什么,它都是假的.我在我的JSON请求中尝试了以下值

"isActive": 1
"isActive": true 
"isActive": "true"
"isActive": ""
"isActive": null
"isActive": false
Run Code Online (Sandbox Code Playgroud)

以上所有都在我的控制器中发送错误.请帮忙.谢谢

添加POJO详细信息

@JsonIgnoreProperties(ignoreUnknown = true)
@JsonSerialize(include=Inclusion.NON_EMPTY)
public class POJOUserDetails {
private String firstName;
private String lastName;
private boolean isActive;

public boolean isActive() {
    return isActive;
}
public void setActive(boolean isActive) {
    this.isActive = isActive;       
} …
Run Code Online (Sandbox Code Playgroud)

java json spring-mvc pojo jackson

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

逗号或带有多种有界类型的&符号?

在Java中,逗号和&符号在声明乘法有界类型时都有效吗?

class MyClass <T extends OtherInterface, SomeInterface>

class MyOtherClass <T extends OtherInterface & SomeInterface>
Run Code Online (Sandbox Code Playgroud)

java types

30
推荐指数
2
解决办法
4869
查看次数

如何扩展Java以引入通过引用传递?

Java是按值传递的.你如何修改语言以引入通过引用传递(或一些等效的行为)?

举个例子

public static void main(String[] args) {
    String variable = "'previous String reference'";
    passByReference(ref variable);
    System.out.println(variable); // I want this to print 'new String reference'
}

public static void passByReference(ref String someString) {
    someString = "'new String reference'";
}
Run Code Online (Sandbox Code Playgroud)

哪个(没有ref)编译成以下字节码

  public static void main(java.lang.String[]);
    Code:
       0: ldc           #2                  // String 'previous String reference'
       2: astore_1
       3: aload_1
       4: invokestatic  #3                  // Method passByReference:(Ljava/lang/String;)V
       7: return

  public static void passByReference(java.lang.String);
    Code:
       0: ldc           #4                  // String …
Run Code Online (Sandbox Code Playgroud)

java bytecode language-design pass-by-reference bytecode-manipulation

27
推荐指数
4
解决办法
2849
查看次数

Spring:使用ResponseEntity返回空HTTP响应<Void>不起作用

我们正在使用Spring实现REST API(4.1.1.).对于某些HTTP请求,我们希望返回一个没有正文作为响应的头.但是,使用ResponseEntity<Void>似乎不起作用.使用MockMvc测试调用时,将返回406(不可接受).使用ResponseEntity<String>没有参数值(new ResponseEntity<String>( HttpStatus.NOT_FOUND ))工作正常.

方法:

@RequestMapping( method = RequestMethod.HEAD, value = Constants.KEY )
public ResponseEntity<Void> taxonomyPackageExists( @PathVariable final String key ) {

    LOG.debug( "taxonomyPackageExists queried with key: {0}", key ); //$NON-NLS-1$

    final TaxonomyKey taxonomyKey = TaxonomyKey.fromString( key );

    LOG.debug( "Taxonomy key created: {0}", taxonomyKey ); //$NON-NLS-1$

    if ( this.xbrlInstanceValidator.taxonomyPackageExists( taxonomyKey ) ) {

        LOG.debug( "Taxonomy package with key: {0} exists.", taxonomyKey ); //$NON-NLS-1$

        return new ResponseEntity<Void>( HttpStatus.OK );

    } else { …
Run Code Online (Sandbox Code Playgroud)

java rest spring spring-mvc

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

在主体中忽略参数时编写lambda表达式

如果lambda表达式不需要参数,因此它的名称是多余的,我如何编写它?

这种方式不编译:

setRowFactory(-> new TableRowCustom());
Run Code Online (Sandbox Code Playgroud)

但是这个做了:

setRowFactory(__ -> new TableRowCustom());
Run Code Online (Sandbox Code Playgroud)

有没有更好的办法?

java lambda java-8

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

JDK 8 update 20中是否存在类型推断回归?

我有以下代码的问题:

public static <T> T firstNonNull(@Nullable T first, @Nullable T second) {
    return first != null ? first : second;
}

public static Set<String> getStrings() {
   return new HashSet<>();
}

public static Set<String> doesNotCompile = firstNonNull(getStrings(), new HashSet<>());
Run Code Online (Sandbox Code Playgroud)

使用JDK 8直到更新11,此代码编译.使用JDK 8 update 20,它不再编译.在最后一个语句中,我必须显式指定String最后一个HashSet实例化的类型参数.

我想知道这个代码是否错误,或者它是否是最后一次JDK更新中的回归.

java java-8

25
推荐指数
1
解决办法
817
查看次数

是什么导致"java.lang.IllegalStateException:BindingResult和bean name'命令的普通目标对象'都不可用作请求属性"?

对于这些类型的问题,这是一个广泛的规范问答帖.


我正在尝试编写一个Spring MVC Web应用程序,用户可以在其中添加电影名称到内存中的集合.它的配置是这样的

public class Application extends AbstractAnnotationConfigDispatcherServletInitializer {
    protected Class<?>[] getRootConfigClasses() {
        return new Class<?>[] {};
    }
    protected Class<?>[] getServletConfigClasses() {
        return new Class<?>[] { SpringServletConfig.class };
    }
    protected String[] getServletMappings() {
        return new String[] { "/" };
    }
}
Run Code Online (Sandbox Code Playgroud)

@Configuration
@ComponentScan("com.example")
public class SpringServletConfig extends WebMvcConfigurationSupport {
    @Bean
    public InternalResourceViewResolver resolver() {
        InternalResourceViewResolver vr = new InternalResourceViewResolver();
        vr.setPrefix("WEB-INF/jsps/");
        vr.setSuffix(".jsp");
        return vr;
    }
}
Run Code Online (Sandbox Code Playgroud)

有一个单一@Controller类在com.example

@Controller
public class MovieController {
    private final CopyOnWriteArrayList<Movie> …
Run Code Online (Sandbox Code Playgroud)

java spring jsp spring-mvc

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

NullPointerException,在三元表达式中具有自动装箱功能

运行以下Java代码:

boolean b = false;
Double d1 = 0d;
Double d2 = null;
Double d = b ? d1.doubleValue() : d2;
Run Code Online (Sandbox Code Playgroud)

为什么会出现NullPointerException?

java autoboxing nullpointerexception

23
推荐指数
2
解决办法
6343
查看次数

Java中的"int不能被解除引用"

我是Java的新手,我正在使用BlueJ.我在尝试编译时不断得到"Int not be dereferenced"错误,我不确定问题是什么.错误特别发生在我底部的if语句中,其中"equals"是一个错误,"int不能被解除引用".希望得到一些帮助,因为我不知道该怎么做.先感谢您!

public class Catalog {
    private Item[] list;
    private int size;

    // Construct an empty catalog with the specified capacity.
    public Catalog(int max) {
        list = new Item[max];
        size = 0;
    }

    // Insert a new item into the catalog.
    // Throw a CatalogFull exception if the catalog is full.
    public void insert(Item obj) throws CatalogFull {
        if (list.length == size) {
            throw new CatalogFull();
        }
        list[size] = obj;
        ++size;
    }

    // Search the catalog for the …
Run Code Online (Sandbox Code Playgroud)

java int bluej

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

如何使用web.xml中的Servlet URL映射?

我有一个包含内容的web.xml文件:

<servlet>
    <servlet-name>servlet1</servlet-name>
    <servlet-class>org.mycompany.test1</servlet-class>
</servlet>
<servlet>
    <servlet-name>servlet2</servlet-name>
    <servlet-class>org.mycompany.test2</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>servlet1</servlet-name>
    <url-pattern>/path/test</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>servlet2</servlet-name>
    <url-pattern>/path/test/*</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)

我试过请求

.../path/test/abc 
.../path/test
Run Code Online (Sandbox Code Playgroud)

这两个请求都由Servlet2处理.为什么?

UPDATE

谢谢你们的帮助.我意识到行为取决于servlet映射声明的顺序.我试过这个web.xml

<servlet>
    <servlet-name>servlet1</servlet-name>
    <servlet-class>org.mycompany.test1</servlet-class>
</servlet>
<servlet>
    <servlet-name>servlet2</servlet-name>
    <servlet-class>org.mycompany.test2</servlet-class>
</servlet>
<servlet>
    <servlet-name>servlet3</servlet-name>
    <servlet-class>org.mycompany.test3</servlet-class>
</servlet>
<servlet>
    <servlet-name>servlet4</servlet-name>
    <servlet-class>org.mycompany.test4</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>servlet1</servlet-name>
    <url-pattern>/path/test</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>servlet2</servlet-name>
    <url-pattern>/path/test/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>servlet3</servlet-name>
    <url-pattern>/path/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>servlet4</servlet-name>
    <url-pattern>/path</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)

结果:

.../path/test/abc - servlet2
.../path/test/ - servlet2
.../path/test - servlet2

.../path/abc - servlet3
.../path/ - servlet4
.../path - servlet4
Run Code Online (Sandbox Code Playgroud)

java servlets java-ee

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