您好我正在使用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中,逗号和&符号在声明乘法有界类型时都有效吗?
class MyClass <T extends OtherInterface, SomeInterface>
class MyOtherClass <T extends OtherInterface & SomeInterface>
Run Code Online (Sandbox Code Playgroud) 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
我们正在使用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) 如果lambda表达式不需要参数,因此它的名称是多余的,我如何编写它?
这种方式不编译:
setRowFactory(-> new TableRowCustom());
Run Code Online (Sandbox Code Playgroud)
但是这个做了:
setRowFactory(__ -> new TableRowCustom());
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?
我有以下代码的问题:
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更新中的回归.
对于这些类型的问题,这是一个广泛的规范问答帖.
我正在尝试编写一个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代码:
boolean b = false;
Double d1 = 0d;
Double d2 = null;
Double d = b ? d1.doubleValue() : d2;
Run Code Online (Sandbox Code Playgroud)
为什么会出现NullPointerException?
我是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) 我有一个包含内容的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)