当前位置: 首页 > 知识库问答 >
问题:

Spring MVC在使用POST请求时无法在控制器中找到方法

况繁
2023-03-14
I am new to spring and I am facing the following issue:

我可以通过创建一个新的控制器和ModelAndView方法来进行POST调用,但现在我又面临一个问题,数据无法从JSP传递到控制器。我的JSP代码是:

form:form method="POST" action="UserOperation"
        modelAttribute="DebitModel">
        <h3>Debit</h3>

                    <c:if test="${!empty listAccounts}">
                        <select name="item" id="account_dropdown"
                            onchange="changeAccountDetails(this.options[this.selectedIndex].value)">
                            <c:forEach items="${listAccounts}" var="account">
                                <option
                                    value="${account.accID},${account.acctype},${account.balance}">AccID:
                                    ${account.accID} Balance: ${account.balance}</option>
                            </c:forEach>
                        </select>
                        <br>
                        <br>
                        <label ><b>Account ID: </b></label>
                        <label id="accIdText" path="accID">${listAccounts[0].accID}</label>
                        <label><b>Account Type: </b></label>
                        <label id="accTypeText" path="acctype">${listAccounts[0].acctype}</label>
                        <label><b>Balance: </b></label>
                        <label id="accBalText" path="balance">${listAccounts[0].balance}</label>
                    </c:if>
                    <br> <br> Enter Amount<input type="text"
                        id="amount" width="80" path="amount"></input> <br> <br>
        <input type="submit" value="Debit"></input>
    </form:form>

有一个名为DebitModel的正常bean类。我尝试在许多地方搜索未传递的数据,并找到了提到的form:input解决方案,但如果使用此方法,则没有绑定FoundException'java.lang.IllegalStateException:bean名称'debitmodel'的BindingResult和plain target object都不作为请求属性可用',即使存在<%@taglib uri=“http://www.springframework.org/tags/form”prefix=“form”%>。

The Controller class Code:

@Controller
@RequestMapping(value = "/UserOperation")
public class DebitController {
    @Autowired
    private AccountService mAccountService;

    @RequestMapping(method = RequestMethod.POST)
    public ModelAndView registerCustomer(@ModelAttribute("DebitModel") DebitModel debitModel, BindingResult result,
            HttpServletRequest request) throws NoSuchAlgorithmException, FileNotFoundException {

        ModelAndView modelAndView = new ModelAndView();
        System.out.println("data------------------------" + debitModel.toString());
        return modelAndView;
    }

}

共有1个答案

唐繁
2023-03-14

显示您的控制器类。

看来您在路径定义中使用了错误的模式。尝试在jsp和控制器级别将“/userHomeDebit”更改为“userHomeDebit”。

这可以在您提交表单时与浏览器url进行核对。让我们认为您的应用程序名是SampleApplication,那么url将是

http://localhost:8080/SampleApplication

然后,如果使用/userHomeDebit作为控制器路径映射,则url将发生如下更改。

http://localhost:8080/userHomeDebit

 类似资料:
  • 在我的控制器中,我有一个用以下映射映射的方法:@PostMapping(“/”)。 此方法需要一个我试图捕获的请求主体,如下所述: 使用这两种方法对我来说都很好,我只是进退两难,如果直接在实体类中接受请求体是一个好主意和最佳实践的话。 我不想在controller类中公开我的实体类,因为我不确定这是否是一个好主意。 java 这两种方法都给出了相同的结果,更多的是关注要遵循的最佳实践。

  • 我可以在POST请求时发送对象列表作为响应,并在VueJs客户端中接收它 但是当我尝试用自定义类响应时(我甚至在请求映射注释中添加了) 在axios的帮助下发送VueJs端请求。邮递 Vue用户界面客户端接收 为什么我可以用对象列表响应而不能用POJO响应,以及如何解决这个问题?非常感谢。 PS.项目依赖于jackson-数据库v2.8.2和Spring v4.3.1

  • 问题内容: 我正在使用simple_form gem并生成表单,我正在指定remote:true选项,如下所示: 因此,表单的输出html是以下片段: 正如我检查的那样,当使用 remote:true 选项时,使用标准的form_for帮助器将 data-remote =’true’添加 到表单中。从生成的html中可以看到,当我使用simple_form gem时,也有这样的属性。 __ 因此,

  • 我的控制器中有一个函数。问题是我必须同时使用两个请求,但在控制器中只能使用其中一个。 照明\支持\外观\请求 代码: 解决方案是什么?

  • 问题内容: 我正在尝试在Swift中运行HTTP请求,以将2个参数发布到URL。 例: 链接: 参数: 最简单的方法是什么? 我什至不想阅读回复。我只想发送该文件,以通过PHP文件对数据库进行更改。 问题答案: 在Swift 3及更高版本中,您可以: 哪里: 这将检查基本的网络错误以及高级HTTP错误。这也可以正确地对查询的参数进行转义。 请注意,我使用的of 来说明的正确结果,该结果是“百分比编

  • 我正在尝试在Swift中运行一个HTTP请求,将2个参数发布到一个URL。 示例: 链接: 参数: null 我甚至都不想看回复。我只是想通过一个PHP文件发送它来执行对我的数据库的更改。