1

我有一个@Controller带有以下@RequestMapping注释的

@RequestMapping(value={"somevalue"}, 
                method=RequestMethod.GET,
                produces=MediaType.TEXT_HTML_VALUE)
public String findOneById(@PathVariable String id, Model model){
    model.addAttribute(findOneById(id));
    return "some view";
}

观察它使用@PathVariable,基于 URI,它可以在 周围工作/persons/{id},例如:

  • /人/100
  • /人/200

它检索一个预期的人。

@RequestMapping方法在以下情况下可以正常工作:

  • 我将 URL/URI 放在同一个 Web 浏览器地址栏中 (.../persons/200)
  • 当我生成项目报告时,包括每个项目的链接以查看详细信息(.../persons/200)。

我正在尝试创建一个搜索表单,如下所示:

<body>

        <spring:url var="findOne" value="/persons/" >

        </spring:url>

        <form action="${findOne}" method="get">     
            <table>
                <tr>
                    <td><label for="id"><spring:message code="persona.id.label"/></label></td>
                    <td><input name="id" id="id" value=""/></td>
                </tr>
                <tr>
                    <td></td>
                    <td><input type="submit" value="search"/></td>
                </tr>
            </table>
        </form>
    </body>

我的问题是,当我按下提交时,表单总是生成/创建 URL 以进行格式搜索/persons?id=100。我知道这是正常的,也是意料之中的。

但只是好奇,当然如果可能的话:

问题:

生成 URI 模式的新配置是什么,/persons/100而不是/persons?id=100当我按下提交按钮时?

我想避免创建一个使用(it for )的新@RequestMapping方法。它补充了使用(it for ) 版本的方法。@RequestParam?id=100@RequesMapping@PathVariable/100

谢谢

4

0 回答 0