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

Spring MVC:路径变量{studentId}未正确显示

公西浩
2023-03-14

这让我很困惑。而不是使用一个路径变量值的正确URLhttp://somedomain.com:8080/someWebApp/essays/main/student/25/activity/add“(其中25是路径变量{code>{studentId}}的值)我在我的URL中得到这个值:”http://somedomain.com:8080/someWebApp/essays/main/student/{studentId}/activity/add“

这是我显示一些testPage的控制器方法,它可以正常工作:

@RequestMapping(value="/{studentId}/activity/add", method = RequestMethod.GET)
    public String getForm(@PathVariable Integer studentId, Model model) {

        StudentActivityDTO studentActivityDTO = new StudentActivityDTO();
        Student student = studentService.get(studentId);
        studentActivityDTO.setStudent(student);
        studentActivityDTO.getActivity().setEssayFlag("Essay");
        model.addAttribute("studentActivityDTO", studentActivityDTO);
        model.addAttribute("courseList", courseService.getAll());
        model.addAttribute("teacherList", teacherService.getAll());

        return "testPage";
    }

这是发生问题的后控制器方法:

@RequestMapping(value="/{studentId}/activity/add", method = RequestMethod.POST)
    public String postForm(@ModelAttribute("studentActivityDTO") StudentActivityDTO studentActivityDTO,
                            @PathVariable Integer studentId,
                            Model model) {

        logger.debug("Received request to add new activity to student");

        Activity activity = studentActivityDTO.getActivity();
        activityService.add(studentId, activity);

        return "success/addActivitySuccess";
    }

在第一种情况下,PathVariable可以正常工作,在第二种情况下,它会出现以下错误:

Failed to convert value of type 'java.lang.String' to required type 'java.lang.Integer'; nested exception is java.lang.NumberFormatException: For input string: "{studentId}"

我得到的是字符串“{学生ID}”,而不是URL中的{学生ID}的某些值。

有人能告诉我为什么吗?

更新:这是jsp页面的重要部分(这是一个相当大的页面):

<c:url var="studentUrl" value="/essays/main/student/{studentId}/activity/add" />
<form:form modelAttribute="studentActivityDTO" method="POST" action="${studentUrl}">
...
<input type="submit" value="Submit" />
</form:form>

共有1个答案

莘俊能
2023-03-14

也许你想

<c:url var="studentUrl" value="/essays/main/student/${studentActivityDTO.student.id}/activity/add" />
 类似资料:
  • 我面临一些关于woocommerce可变产品的问题。每种产品我都有许多不同的变体(每种产品大约4-5个)。尽管我已经在变体设置中设置了它们,但在前端,当用户选择它时,它仍然会显示此消息:“对不起,没有与您选择的产品匹配的产品。请选择其他组合。” 是否是由于大量的组合导致变化相互冲突?或者是由于库存/重量限制设置,有人在他们的项目中经历过这种情况吗?

  • 我有一个有一些订单的客户列表,我把他们都显示在一个表中。我添加了一个按钮,以便删除每个订单,如果需要的话。 当我试图删除一个特定的订单时,我会得到以下错误 未能将类型“java.lang.String”的值转换为所需类型“java.lang.Long”;嵌套异常是java.lang.NumberFormatException:对于输入字符串:“{cid}(cid=${customer.id})”

  • 所以比正确答案更重要的是,我真的很想知道为什么这不起作用。 下面是一些我无法使用的示例代码: 如果我像这样对着它打一个卷曲:

  • 谁能建议我该怎么做才能绕过这个问题?我以为Spring会把第一个破折号之前的任何东西作为ID,把后面的任何东西作为名称,但事实并非如此。 如果我使用/product/1-name执行GET,它工作得很好。如果path变量包含破折号,这似乎是一种奇怪的行为。 谢谢

  • 我知道有很多关于JAVA_HOME的问题,我以前当然也研究过它。我多年来一直在设置和运行java代码。 我认为libgdx需要一个jdk bin的路径,而不是一个jre bin。当我试图创建一个小测试文件时,我收到了以下错误: 错误:JAVA_HOME设置为无效目录:C:\Program Files\Java\JRE7\bin java_home=c:\program files\java\jre

  • 本文向大家介绍SpringMVC请求的路径变量里面写正则表达式的方法,包括了SpringMVC请求的路径变量里面写正则表达式的方法的使用技巧和注意事项,需要的朋友参考一下     Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as a fallbac