如何添加 URL 参数但在 POST 中隐藏其他参数 - Spring MVC

发布于 2024-11-07 06:46:32 字数 486 浏览 0 评论 0原文

我正在尝试在 Spring MVC 应用程序中添加 URL 参数。这是一个显示结果的基本搜索页面。

在搜索页面中,有一个表单设置为POST。 URL 中有许多隐藏字段和其他我不希望出现的字段。所以,我不想做 GET。

我确实想要 URL 中的搜索查询。因此,单击搜索按钮后,生成的搜索结果页面需要具有类似 /search?query=hello 的 URL

为了使其正常工作,我在 Spring MVC 控制器中创建一个 RequestMapping 方法,并进行重定向:添加查询参数。但是,我不确定使用重定向是最好的答案,似乎重定向也可能存在性能问题。

我环顾四周,注意到人们使用 javascript 和位置对象,但设置位置对象显然会重新启动您设置的 URL。我还查看了 HTTPServletResponse & HTTPServletRequest 对象,但找不到太多。

关于如何强制将搜索参数添加到 URL 中,有什么想法吗?

I'm trying to add a URL parameter within a Spring MVC application. It's a basic search page that shows results.

In the search page, there is a form that is set to POST. There are many hidden fields and other fields I don't want in the URL. So, I don't want to do a GET.

I do want the search query in the URL. So after clicking the search button, the resulting search results page needs to have a URL like /search?query=hello

To get it to work, I'm creating a RequestMapping method in the Spring MVC Controller and doing a redirect: tacking on the query parameter. However, I'm not sure using a redirect is the best answer, seems there could be performance concerns redirecting as well.

I looked around and noticed folks using javascript and the location object, but setting the location object obviously relaunches the URL you set it to. I also looked at the HTTPServletResponse & HTTPServletRequest objects, but couldn't find much.

Any thoughts on how I can force the search parameter to be added to the URL?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

尘世孤行 2024-11-14 06:46:32

您的表单将指定一个“操作”,告诉它要发布到哪里。我本以为你可以将 onclick 事件附加到你的提交按钮(或将 onsubmit 事件附加到你的表单),通过附加“?query=”来更新操作 url。

<代码>
document.<表单名称>.action += "?query=...";

那么您只需要担心有人在没有启用 JavaScript 的情况下发布您的表单 - 在这种情况下您可以退回到您的重定向。

我不知道服务器技术如何,所以我不能说它是否会乐意为您提供 GET 和 POST 参数,如果不是,您将必须手动从 URL 中删除 GET。

但无论如何,这似乎是一个相当奇怪的情况 - 在 URL 中显示参数真的有那么重要吗?通过 HTML 表单发布的任何内容仍然可以使用正确的工具进行检查,只是稍微困难一些。

Your form will have an 'action' specified telling it where to POST to. I'd have thought you could attach an onclick event to your submit button (or an onsubmit event to your form) that updates the action url by appending "?query=" to it.


document.<form name>.action += "?query=...";

Then you just have to worry about someone posting your form without JavaScript enabled - in this case you could fall back to your redirect.

I don't know how the server technology so I can't say if it will be happy giving you both GET and POST parameters, if not you'll have to manually strip the GETs out of the URL.

But anyway, this seems like a rather odd situation to be in - is it really that big a deal to show the parameters in the URL? Anything that gets posted by an HTML form can still be inspected with the right tools, it's just ever so slightly more difficult.

醉梦枕江山 2024-11-14 06:46:32

我想用代码为我的问题提供更完整的答案。以前的用户帮助我走上了这条路,所以我将其保留为已接受的答案。但是,有一点需要注意:

如果添加到操作中,并且有一个同名的输入文本框,则页面会发布重复的值,例如:query=hello,hello。

因此,我需要删除输入框中的名称,并使用以下 JavaScript。注意,我使用的是prototype.js框架:

Event.observe(window, 'load', function(event) {

Event.observe('searchForm', 'submit', function(event) {     

    $('searchForm').action += "?query="+$('searchBox').value;

});

I wanted to provide a more complete answer to my question with code. The previous user helped me down this path, so I'll keep it as the accepted answer. However, there is one item to note:

If you add on to the action, and you have an input text box with the same name, the page posts a duplicate value like: query=hello,hello.

So, I needed to remove the name on the input box, and use the following javascript. Note, I am using the prototype.js framework:

Event.observe(window, 'load', function(event) {

Event.observe('searchForm', 'submit', function(event) {     

    $('searchForm').action += "?query="+$('searchBox').value;

});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文