Javascript 为什么ArrayList中的第一个值在Java中总是返回null?
当我为学校的小网站项目编写代码时,我遇到了一个让我发疯的错误(可能是我犯的) 我得到了一个包含我创建的对象(用户)的ArrayList。。。目前为4:Javascript 为什么ArrayList中的第一个值在Java中总是返回null?,javascript,java,spring-boot,arraylist,thymeleaf,Javascript,Java,Spring Boot,Arraylist,Thymeleaf,当我为学校的小网站项目编写代码时,我遇到了一个让我发疯的错误(可能是我犯的) 我得到了一个包含我创建的对象(用户)的ArrayList。。。目前为4: public static ArrayList<Nutzer> users = new ArrayList<Nutzer>(); ... public static void init() { Nutzer testNutzer1 = new Nutzer("joey", "Gothra", "10",
public static ArrayList<Nutzer> users = new ArrayList<Nutzer>();
...
public static void init() {
Nutzer testNutzer1 = new Nutzer("joey", "Gothra", "10", null);
Nutzer testNutzer2 = new Nutzer("Badshah", "Gothra", "10", "Test");
Nutzer testNutzer3 = new Nutzer("Ray", "Gothra", "10", "Baum");
Nutzer testNutzer4 = new Nutzer("Sven", "Gothra", "10", "Niemand");
users.add(testNutzer1);
users.add(testNutzer2);
users.add(testNutzer3);
users.add(testNutzer4);
第一个值总是“null”,我不知道为什么,因为其他一切都很好
有什么建议或解决办法吗?我已经在谷歌上搜索了很多,但什么也没找到
编辑:
这是我的“Nutzer”课程:
如果这是您真正的
Nutzer
类(而不是包含其他错误的编辑版本),那么您的问题很可能是vorname
字段的设置器:
public String getVorname() {
return vorname;
}
public void setVorame(String vorname) {
this.vorname = vorname;
}
setters的名字拼错了:你把它命名为
setVorame()
,而你的小问题是“我怎样才能把帖子变成put?”我相信答案是,你不能。但是,您可以在spring中使用一个隐藏的输入字段来伪造和删除http方法:……我将对此进行研究。。。谢谢:)在你的代码中有两件事情看起来并不完全正确。但是,这些都是猜测和你可以尝试的东西。。。更改DTO的构造函数,以使ArrayList符合您的要求,而不是注入ArrayList。然后将DTO插入/自动连接到@控制器中,而不是通过@RequestMapping
方法将其传入。我感觉你有不止一个ArrayList对象。你能展示一下你的Nutzer
类吗?也许问题就在这里。我现在用我的Nutzer
classe编辑了这篇文章哦,天哪!!!非常感谢你,先生!!我通过构建一个全新的数据结构解决了这个问题,谢天谢地,我认为我的代码现在比最初的要好得多。。。我从这个项目中学到了很多。。。谢谢你的时间和建议编辑:实际上不是。。。。我用我的旧文件重新创建了它,Spring甚至不会启动项目,因为有一个未知的“Setter”。。。
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8" />
<title>Edit</title>
</head>
<script th:inline="javascript">
function() sendDaten(){
/*<![CDATA[*/
var data = /*[[${formular.besucher}]]*/
/*]]>*/
var url = "http://localhost:8080/edit";
var json = JSON.stringify(data);
var xhr = new XMLHttpRequest();
xhr.open("POST", url, true);
xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded');
xhr.onload = function () {
var users = JSON.parse(xhr.responseText);
if (xhr.readyState == 4 && xhr.status == "200") {
console.table(users);
} else {
console.error(users);
}
}
xhr.send(json);
}
</script>
<body>
<div class="container">
<div class="row">
<div class="col-md-12"> <!-- AHA WTF -->
<h1>Teilnehmer bearbeiten</h1>
</div>
</div>
<div class="row">
<div class="col-md-6">
<a class="btn btn-info" href="#" th:href="@{/Overview}"> Zurück zur Übersicht </a>
<form action="#" class="form-horizontal" th:action="@{/edit}"
th:object="${formular.besucher}" method="post">
<fieldset>
<span class="pull-right"> <input onclick="sendDaten()" type="submit" id="submitButton" class="btn btn-success" th:value="Speichern">
<input type="reset" id="resetButton" class="btn btn-danger" th:value="Zurücksetzen" />
<button onclick="sendDaten();">Click</button>
</span>
<table class="table">
<thead>
<tr>
<th>Vorname</th>
<th>Nachname</th>
<th>Karten</th>
<th>Wunschsitzpartner</th>
</tr>
</thead>
<tbody>
<tr th:each="u, itemStat : ${formular.besucher}">
<td><input
th:placeholder="Vorname"
th:name="|besucher[${itemStat.index}].vorname|"
th:value="${u.getVorname()}" required /></td>
<td><input
th:placeholder="Nachname"
th:name="|besucher[${itemStat.index}].nachname|"
th:value="${u.getNachname()}" required /></td>
<td><input
th:placeholder="Karten"
th:name="|besucher[${itemStat.index}].karten|"
th:value="${u.getKarten()}" required /></td>
<td><input
th:placeholder="Wunschsitzpartner"
th:name="|besucher[${itemStat.index}].sitzpartner|"
th:value="${u.getSitzpartner()}"/></td>
</tr>
</tbody>
</table>
</fieldset>
</form>
</div>
</div>
</div>
</body>
</html>
@RequestMapping(value = "/edit", method = RequestMethod.POST, consumes = "application/x-www-form-urlencoded")
public String updateTest(NutzerErstellenDTO dto)
List<Nutzer> test = dto.getBesucher();
for (Nutzer nutzer : test) {
System.out.println("test: " + nutzer.getVorname() + nutzer.getNachname() + nutzer.getKarten() + nutzer.getSitzpartner());
}
test: nullGothraTestEditWorksFine10*edited
public class Nutzer {
private String vorname;
private String nachname;
private String karten;
private String sitzpartner;
public Nutzer() {
}
public Nutzer(String vorname, String nachname, String karten, String sitzpartner) {
super();
this.vorname = vorname;
this.nachname = nachname;
this.karten = karten;
this.sitzpartner = sitzpartner;
}
public void display() {
System.out.println(vorname + nachname + karten + sitzpartner);
}
public String getVorname() {
return vorname;
}
public void setVorame(String vorname) {
this.vorname = vorname;
}
public String getNachname() {
return nachname;
}
public void setNachname(String nachname) {
this.nachname = nachname;
}
public String getKarten() {
return karten;
}
public void setKarten(String karten) {
this.karten = karten;
}
public String getSitzpartner() {
return sitzpartner;
}
public void setSitzpartner(String sitzpartner) {
this.sitzpartner = sitzpartner;
}
public String getVorname() {
return vorname;
}
public void setVorame(String vorname) {
this.vorname = vorname;
}