0

我有一个基于 Spring MVC 的 JSP 页面,它使用 Displaytag 来显示一组数据。在页面上的表单中,用户可以选择两个复选框中的一个或两个,以显示他们想要查看的数据子集(设置“O”、设置“Q”或“B”两者。)

表单和显示在第一页上工作正常,但表格底部的 Displaytag 分页链接包含格式错误的 URL。结果是,当用户单击链接以显示不同的页面时,复选框被重置并且用户总是看到“O 和 Q”,即使他们只想看到“Q”(例如)。

我已将此参数添加到 Displaytag 用于生成这些 URL 的表单中(根据 Displaytag 文档),但生成的 URL 中的值不会改变。

表单条目(type="o"):

<input type="hidden" id="type" name="type" value="o">

分页 URL(两者的 type="b"):

http://localhost:8080/searchmain.html?d-443691-p=3&endDate=&_stateQuote=on&type=b&stateOrder=true

任何人都可以对此有所了解吗?

有谁知道 URL 参数是如何生成的?

4

1 回答 1

0

找到了答案 - 将其发布在这里,希望对其他人有所帮助。

Displaytag 使用初始 HTTP 请求中的参数而不是响应中的参数为其分页生成 URL 参数。因此,如果您依赖一些返回的更新参数(如本例所示),那么您的分页将产生不正确的结果。在这种情况下,页面上的两个复选框被用来更新隐藏的“类型”字段,然后在响应中传回。不幸的是,分页 URL 已使用 REQUEST 中的“type”字段更新,该字段仍包含先前未更新的值(例如“B”),而不是新的更新值“O”。

无论您希望在 URL 中找到什么值,都必须在您传入的 HTTP REQUEST 中,您不能指望利用 RESPONSE 中的任何内容。

有道理,只是花了一段时间才找到它。

如果您想查看实际代码,它位于Displaytag源中 TableTag.java 中的此例程中:

protected void initHref(RequestHelper requestHelper)
于 2012-12-04T14:45:52.970 回答