提问人:sebbington 提问时间:9/11/2023 最后编辑:Roman Csebbington 更新时间:9/11/2023 访问量:41
Spring MVC Java 为什么在我的 url 中添加了额外的请求参数?
Spring MVC Java why are extra request params being added to my url?
问:
我有一个网站,叫做.我有一个表格,看起来像这样:website.com
<form:form method="get" id="profileForm" modelAttribute="profile" onsubmit="updateFormAction()">
<form:label path="username">Name</form:label>
<form:input path="username" id="usernameInput"/>
<input type="submit" value="Submit"/>
</form:form>
<script>
function updateFormAction() {
var username = document.getElementById("usernameInput").value;
var form = document.getElementById("profileForm");
form.action = "/profile/" + username;
}
</script>
表单 url 应该如下所示:website.com/profile/username123
但是,它正在将其处理为website.com/profile/username123?username=username123
这是我的 Web 控制器映射方法:
@GetMapping ("/profile/{username}")
public String profile(@PathVariable("username") String name, Model model, RestTemplate restTemplate) throws JsonProcessingException {
当我设置它时,它可以工作。但是,我不希望这种行为,因为我只能通过该表单发布该网址。我希望能够通过链接进行搜索。<form method="post"
我已经试过了,但是网址看起来像@ModelAttribute("username") String username
website.com/profile/?username=username123
我有什么想法可以解决这个问题吗?我不应该使用表单,而应该使用参数吗?button onsubmit
答:
你为什么要添加?
我认为您可以删除属性和 for 添加并使您的 http 动词发布到 和 .
您可以创建一个名为 的对象,该对象具有一个名为 ;
在您的输入中添加username
path variable
onSubmit
action
/profile
form
controller
profile
username
controller
@ModelAttribute("profile") Profile profile;
那么你可以像这样进入 STH:username
profile
@PostMapping ("/profile")
public String profile(@ModelAttribute("profile") Profile profile) {
评论
如果您没有在 url 中传递任何参数,则不应提交表单。只需从 onsubmit 函数返回即可。这将阻止表单提交或使用带有 onclick 事件处理程序的按钮。然后使用重定向直接到指定的 url。false
type="button"
<script>
function updateFormAction() {
var username = document.getElementById("usernameInput").value;
window.location.href = "/profile/" + username;
return false;
}
</script>
评论
fetch
false