【发布时间】:2020-04-21 00:22:58
【问题描述】:
所以我的问题是,我正在向其中添加用户提供的新记录的列表在调用时被我的程序忽略。
这是第一个 html。用户向我提供了他们的收入、合同类型和年龄:
@RequestMapping(value = "/hello", method = RequestMethod.POST)
public String initialData(@RequestParam() double incomeParameter,
@RequestParam() String contractParameter,
@RequestParam() int ageParameter
) {
if (!contractParameter.equals("Contract work") &&
!contractParameter.equals("Contract of mandate") &&
!contractParameter.equals("Contract of employment")) {
return "firsterror";
} else {
User newUser = new User();
newUser.setIncome(incomeParameter);
newUser.setTypeOfContract(contractParameter);
newUser.setAge(ageParameter);
service.getUsersListCommon().add(newUser);
return "secondpage";
}
}
除非 contractParameter 是代码中提到的三个之一,否则他会得到第一个错误。这很好用。
然后,我正在尝试创建一个列表来存储用户提供的数据(收入、合同、年龄)。正在执行此操作,因为我需要这些数据才能让我的方法在下一页中工作。
我存储初始数据的列表位于 Service 类中,看起来像这样(不确定 setter 是否相关,我没有在任何地方使用它):
List<User> usersListCommon = new ArrayList<User>();
public List<User> getUsersListCommon() {
return usersListCommon;
}
public void setUsersListCommon(List<User> usersListCommon) {
this.usersListCommon = usersListCommon;
}
它作为service被@Autowired 加入到我的Controller 类中,因此您会看到service.getUsersListCommon()。
然后用户按下 提交 按钮,他们将被定向到另一个 HTML,其中应该发生以下情况:
@RequestMapping(value = "/secondpage", method = RequestMethod.POST)
public String detailedData(@RequestParam() int amountParameter,
@RequestParam() int timeParameter
) {
User finalUser = new User();
for (int i = 0; i < service.getUsersListCommon().size(); i++) {
finalUser.setIncome(service.getUsersListCommon().get(i).getIncome());
finalUser.setTypeOfContract(service.getUsersListCommon().get(i).getTypeOfContract());
finalUser.setAge(service.getUsersListCommon().get(i).getAge());
}
if (finalUser.getAge() < 18) {
return "tooyoung";
} else if (finalUser.getIncome() < 2000) {
return "toopoor";
} else if (amountParameter > 10000) {
return "toomuch";
} else if (timeParameter > 35) {
return "toolong";
} else if (finalUser.getIncome() >= 2000 &&
finalUser.getTypeOfContract().equals("Contract work") &&
finalUser.getAge() <= 50 &&
amountParameter <= 10000 &&
amountParameter > 0 &&
timeParameter <= 35) {
return "granted";
} else if (finalUser.getIncome() >= 2000 &&
finalUser.getTypeOfContract().equals("Contract mandate") &&
finalUser.getAge() <= 50 &&
amountParameter <= 10000 &&
amountParameter > 0 &&
timeParameter <= 35) {
return "granted";
} else if (finalUser.getIncome() >= 2000 &&
finalUser.getTypeOfContract().equals("Contract of employment") &&
finalUser.getAge() <= 50 &&
amountParameter <= 10000 &&
amountParameter > 0 &&
timeParameter <= 35) {
return "granted";
} else {
return "requirementsnotmet";
}
}
现在,这里用户应该再给我两种类型的信息——他们想要贷款的金额和所需的贷款时间长度。
不要介意每种合同的条件都是一样的,到目前为止我还没有理会它,因为它目前只是一种装饰性的东西。
我的主要问题是,当用户提供这些附加数据并按提交...时出现此错误: 出现意外错误(类型=错误请求,状态=400)。 所需的双参数“incomeParameter”不存在
所以我的程序不承认之前的数据已提供并存储在我在第二个映射方法开始时调用的 List 中。
另外,不确定是否相关,但我的程序的第一页在浏览器中看起来像这样: http://localhost:8082/hello
但是在我的 html 中按下按钮时:
<body>
<form method="post">
<div id="header">Welcome to a swift creditworthiness' check.</div>
<div class="subheader">Please, provide all the required data below and push the button below to see the result.</div>
<input type="text" name="incomeParameter" placeholder="Your monthly income">
<input type="text" name="contractParameter" placeholder="Kind of contract">
<input type="text" name="ageParameter" placeholder="Your age">
<input type="submit" value="Calculate">
</form>
<div class="questions">In case of any questions, please proceed here:</div>
</body>
...它确实将我重定向到下一页:
<body>
<form method="post">
<div id="header">Please, provide additional required data below:</div>
<input type="text" name="amountParameter" placeholder="Desired amount of the loan">
<input type="text" name="timeParameter" placeholder="Desired time of the loan">
<input type="submit" value="Calculate">
</form>
</body>
但不是像这样:http://localhost:8082/secondpage,它仍然是 http://localhost:8082/hello。
我认为这是一个相当长的帖子,所以感谢您抽出时间来倾听我的问题。 :)
【问题讨论】:
标签: java html list button mapping