小编Rae*_*ald的帖子

尝试测试HTTP POST的处理时HttpMediaTypeNotSupportedException

我试图POST在spring框架中测试方法,但我一直都在犯错误.

我第一次尝试这个测试:

this.mockMvc.perform(post("/rest/tests").
                            param("id", "10").
                            param("width","25")
                            )
                .andDo(MockMvcResultHandlers.print())
                .andExpect(status().isOk());
Run Code Online (Sandbox Code Playgroud)

并得到以下错误:

org.springframework.http.converter.HttpMessageNotReadableException

然后我尝试修改测试如下:

this.mockMvc.perform(post("/rest/tests/").
                            content("{\"id\":10,\"width\":1000}"))
                .andDo(MockMvcResultHandlers.print())
                .andExpect(status().isOk());              
Run Code Online (Sandbox Code Playgroud)

但得到以下错误:
org.springframework.web.HttpMediaTypeNotSupportedException

我的控制器是:

@Controller
@RequestMapping("/rest/tests")
public class TestController {

    @Autowired
    private ITestService testService;

    @RequestMapping(value="", method=RequestMethod.POST)
    @ResponseStatus(value = HttpStatus.OK)
    public void add(@RequestBody Test test)
    {
        testService.save(test);
    }
}
Run Code Online (Sandbox Code Playgroud)

Test类有两个字段成员:idwidth.简而言之,我无法为控制器设置参数.

设置参数的正确方法是什么?

spring unit-testing http spring-mvc

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

使用StringBuilder生成逗号分隔的列表

以下是我的方案,虽然我已经实现了所需的输出,但我希望它是一个体面和优化的代码.

String arr[]={"we","er","rtt","yu","uu","ii"};

      StringBuilder strcat = new StringBuilder();

      for(int i1=0;i1<arr.length;i1++)
      {
          // Some processing
         strcat.append(arr[i1]);

         if(arr.length-1!=i1)
         {

              strcat.append(",");
         }
      }

     System.out.println("Value:"+strcat);
Run Code Online (Sandbox Code Playgroud)

我有String[]数组和一些处理,处理后我想用逗号(,)追加值.问题是逗号,它也附加到最后的值,我不想要,我已经应用了一个逻辑.我不知道它是否正确.但输出是正确的.如果我错了,请纠正我,并建议是否有任何其他方法可以实现.

java

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

为什么减法超过30天导致错误答案

如果我尝试减去1到29天,则返回日期是正确的,但如果我尝试减去超过30天,则返回日期是错误的.谁能解释我哪里出错?

public class MapTesting {
    public static void main(String[] args) {
        Date dNow = new Date( );
        SimpleDateFormat ft = new SimpleDateFormat ("yyyy-dd-MM");

        try {
            Date date = ft.parse("2011-01-10");
            Date su=new Date(date.getTime()-30*24*3600*1000);
            System.out.println(su);
            System.out.println(date);
        } catch (ParseException e) {
            e.printStackTrace();
        }
Run Code Online (Sandbox Code Playgroud)

java datetime

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

Spring 表达式中冒号后的部分表示什么

我理解的部分,${user.configuredName}但我无法理解或在谷歌上找到之后的部分,:ABC谁能解释一下它的作用?我的理解是这${user.configuredName}将使用messageSource.

 <constructor-arg value="${user.configuredName:ABC}"/>
Run Code Online (Sandbox Code Playgroud)

spring spring-el

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

为什么Set允许重复的Byte Integer和Long值

因为我的知识集基本上有两个方法equals()和hashcode(),基于它确定值包含的是相等的并避免重复输入,但在程序之下我感到困惑,甚至包装类也有两个方法被覆盖然后为什么它接受重复的价值?

码:

Collection col=new LinkedHashSet();
col.add(new Long(65));
col.add(new Byte((byte) 65));
col.add(new Integer(65));
col.add("A");

System.out.println(col);
Run Code Online (Sandbox Code Playgroud)

答案:[65,65,65,A]但我预计[65,A]

java set

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

如果在私有构造函数中初始化,则从静态方法访问时,保证私有静态字段为非null

我有一个名为UrlControllerThe class的类,如:

public class UrlController {
    private static final String BASE_URL = "http://api.site.mil/";       

    private static Retrofit retrofit;

    private UrlController() {
        retrofit = new Retrofit.Builder()
                .baseUrl(BASE_URL)
                .addConverterFactory(GsonConverterFactory.create())
                .build();
    }

    public static Retrofit getRetrofit() {
        return retrofit;
    }
} 
Run Code Online (Sandbox Code Playgroud)

我应该检查if(retrofit==null)getRetrofit()方法,或者它始终没有空?

java static initialization

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

加载使用本机代码的多个版本的 Java 类

如果您想要加载一个类的多个版本,如果它们实现了共享接口并且位于单独的 JAR 中,则可以为每个版本使用单独的类加载器来执行此操作。

如果您有一个调用本机代码的 JAR,则可以将本机代码的共享库 (DLL) 存储在其 JAR 中,方法是将共享库提取到临时文件,然后使用System.load从临时文件加载该库

但如果两者都做,会有效吗?如果两个版本的 JAR 都调用本机代码,并且都包含不同版本的共享库,会发生什么情况?

让我们假设两个 JAR 使用不同的临时文件来存储共享库的副本。但是共享库的两个版本都具有调用具有相同声明的本机 (C) 函数的本机代码(但这些函数的实现不同)。JVM/类加载器/会将System.load Java 代码委托给正确的本机代码吗?或者 JVM 会抱怨名称冲突吗?

如果该方案确实失败,我如何使用使用本机代码的类的多个版本?

java java-native-interface shared-libraries classloader

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

为什么HashMap有时会以自然顺序打印

我正在阅读Java中的Hash Map,我发现Hash Maps是无序的和未排序的.因此,在打印使用时,我们应该以键的任意顺序获取映射System.out.println(HM).例如,以下代码

HashMap<Integer,String> HM = new HashMap<>();
HM.put(16,"hello16");
HM.put(6, "hello6");
HM.put(1, "hello1");
Run Code Online (Sandbox Code Playgroud)

打印{16=hello16, 1=hello1, 6=hello6}这是一个明显随机的键序.但是当我替换HM.put(16,"hello16");with时HM.put(15,"hello15");,它会按键的自然顺序打印映射,这是令人惊讶的,似乎不太可能:

{1=hello1, 6=hello6, 15=hello15}
Run Code Online (Sandbox Code Playgroud)

我问了一位朋友,他说这与HashMap的初始容量(= 16)有关,但他无法清楚地解释.任何人都可以用这个特定的例子解释输出中的这种差异.

java hashmap

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

subList() 之后的 ConcurrentModificationException

我在单元测试中遇到了这个问题。

执行后:

List<Card> cleanCards = cards.subList(0, cards.size() - difference);
Run Code Online (Sandbox Code Playgroud)

以下断言给了我一个 ConcurrentModificationException:

assertEquals(limit, cleanCards.size());
Run Code Online (Sandbox Code Playgroud)

错误描述

java.util.ConcurrentModificationException 
at java.util.ArrayList$SubList.size(ArrayList.java:1057)
Run Code Online (Sandbox Code Playgroud)

据我所知,'size()' 方法不会对列表进行结构性更改。我在这里错过了什么吗?

java unit-testing

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

在作为守护进程运行的 ZAP 代理扫描中排除 URL

使用以下命令以守护程序模式启动时,如何从 ZAP 代理扫描中排除某些 URL:

zap.sh -daemon -host 0.0.0.0 -port 8090 -config api.addrs.addr.name=.* -config api.addrs.addr.regex=true -config api.disablekey=true
Run Code Online (Sandbox Code Playgroud)

我可以设置任何参数或配置参数来排除某些 URL 吗?

我正在使用官方 docker image owasp/zap2docker-stable:latest

owasp zap

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