【问题标题】:Handing 2D-Array from Spring boot to React将 2D-Array 从 Spring 引导到 React
【发布时间】:2021-06-21 12:40:08
【问题描述】:

我正在尝试将 2D Char-Array 从我的 Spring-Controller 发送到 React ...它在我使用 Arraylist 时有效,但不适用于 "char[ ][ ]"

这样就可以了

@GetMapping(value = "/test")
public ArrayList<String> getTest() {

    ArrayList<String> arr = new ArrayList<String>();
    arr.add("Something");
    arr.add("Somehow");
    return arr;

这不起作用

@SuppressWarnings("checkstyle:WhitespaceAround")
@GetMapping(value = "/newboard")
public char[][] emptyBoard(char[][] playField) {

    for (char y = 0; y < playField.length; y++) {

        for (char x = 0; x < playField[y].length; x++) {

            playField[y][x] = (' ');

        }
    }
        return playField;
}

【问题讨论】:

  • 呃,用List&lt;List&lt; Character &gt;&gt;怎么样
  • 我正在尝试使用更好更简单的方法,因为我不想更改代码中的所有方法...因为它们都使用“playField as char[][] " @AlbertoSinigaglia

标签: javascript java arrays reactjs spring-boot


【解决方案1】:

经过很好的研究,我发现将原始数据类型发送到前端不起作用...这是对这个问题的回答,可能不是所有情况,但至少在我的情况下这是解决方案。

您必须尝试以下方法:

要么尝试引用类型 =>

@GetMapping(value = "/test")
public ArrayList<String> getTest() {

ArrayList<String> arr = new ArrayList<String>();
arr.add("Something");
arr.add("Somehow");
return arr;

或这种方法(来自类型 {Class} )=>

 @GetMapping(value = "/test")
 public MyModel getTest() {


    MyModel myModel = new MyModel();
    myModel.setFirstName("Somthing");
    myModel.setLastName("Somehow");

    GameUpdate u = new GameUpdate();
    Player p1 = new Player();
    p1.setName("1");
    u.setPlayer1(p1);
    return myModel;
}

【讨论】:

    【解决方案2】:

    您可以只更改返回类型,然后“转换”返回对象:

    @SuppressWarnings("checkstyle:WhitespaceAround")
    @GetMapping(value = "/newboard")
    public List<List<Character>> emptyBoard(char[][] playField) {
    
        for (char y = 0; y < playField.length; y++) {
    
            for (char x = 0; x < playField[y].length; x++) {
    
                playField[y][x] = (' ');
    
            }
        }
        return Arrays.asList(playField)
                    .stream()
                    .map(Arrays::asList)
                    .collect(Collectors.toList());
    }
    

    【讨论】:

    • 感谢您的回答,但 => "List>" 这种方法看起来与 (Arraylist>)... 您的解决方案可能有用但我需要在我使用的所有方法中更改变量(playField),这会在我的游戏算法中造成很多问题。
    • @BasharBoutros 不,您不需要更改任何内容,您只需更改要返回矩阵的 Controller 类上的 return 语句
    • 我得到了这个错误 java: cannot find symbol symbol: method asList() location: class java.util.stream.Collectors
    • @BasharBoutros 抱歉,打错了,现在试试
    猜你喜欢
    • 2021-07-06
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 2018-10-07
    • 2018-08-25
    • 1970-01-01
    • 2017-08-09
    • 1970-01-01
    相关资源
    最近更新 更多