java - 为什么我的 Java 程序忽略另一个 html 中的列表?

标签 java html list button mapping

所以我的问题是,我要向其中添加用户提供的新记录的列表在被调用时被我的程序忽略。

这是第一个 html。用户向我提供了他们的收入、契约(Contract)类型和年龄:

@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 是代码中提到的三个参数之一,否则他会收到第一个错误。这工作得很好。

然后,我尝试创建一个列表来存储用户提供的数据(收入、契约(Contract)、年龄)。正在这样做,因为我的方法需要这些数据才能在下一页中运行。

我存储初始数据的列表位于 Service 类中,看起来像这样(不确定 setter 是否相关,我没有在任何地方使用它):

List<User> usersListCommon = new ArrayList<User>();

    public List<User> getUsersListCommon() {
        return usersListCommon;
    }

    public void setUsersListCommon(List<User> usersListCommon) {
        this.usersListCommon = usersListCommon;
    }

它是@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";
        }
    }

现在,用户应该向我提供另外两种类型的信息 - 他们想要贷款的金额和所需的贷款时间长度。

不要介意每种类型的契约(Contract)的条件都相同,到目前为止我还没有理会它,因为它目前只是一个装饰性的东西。

我的主要问题是,当用户提供此附加数据并按提交时...出现此错误: 出现意外错误(类型=错误请求,状态=400)。 所需的双参数“venueParameter”不存在

因此,我的程序不承认先前的数据已提供并存储在我在第二个映射方法开始时调用的列表中。

<小时/>

另外,不确定是否相关,但我的程序的首页在浏览器中看起来像这样: <强> 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

我认为这是一篇相当长的文章,所以感谢您花时间倾听我的问题。 :)

最佳答案

在您的“form”标签中,我看不到“action”属性。

如果没有“操作”,当您提交表单时,下一个网络调用就是它本身。

因此,如果您在 hello 页面并按下提交,您将(再次)进入 hello 页面。

关于java - 为什么我的 Java 程序忽略另一个 html 中的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59561602/

相关文章:

html - 将 CSV 数据从 div 复制到 Excel 工作表

html - CSS 中心图像水平内联动态宽度父级

arrays - Flutter 将 json 映射到模型数组 'List<dynamic>' 不是类型 'Map<String, dynamic>' 的子类型`

java - 在查询生成器中使用子字符串操作字符串

java - 如何使用 Ant 从单个 jar 列表下载/解压 jar?

java - 在单个线程中安排多个任务

java - 拒绝类,因为它未通过编译时验证

Java运行自定义的groovy代码,如何保证groovy安全?

list - Flutter/Dart-有关如何对 future 进行故障排除的建议?

javascript - 悬停图片时显示编辑框