【问题标题】:Unwanted parameters in URL after s:link and f:params:link 和 f:param 之后的 URL 中不需要的参数
【发布时间】:2011-01-28 14:04:38
【问题描述】:

这里是代码(Seam 2,JSF 1.2)

<s:link style="color: white;" value="Full Listing "
    rendered="#{not listControl.fullList}"
    action="#{listControl.setFullList(true)}" >
    <f:param name="maxResults" value="" />
    <f:param name="firstResult" value="" />
</s:link>

<s:link style="color: white;" value="Limited Listing "
    rendered="#{listControl.fullList}" 
    action="#{listControl.setFullList(false)}" >
    <f:param name="maxResults" value="#{entityMaxResult}" />
    <f:param name="firstResult" value="" />
</s:link>

目标是使用此链接在 maxResults 中显示的结果列表和所有结果之间切换。

原来的网址是这个

_http://localhost:8080/ond/ONDList.seam?maxResults=2&state=DE

当我点击链接时,我得到了正确的功能,但生成的 URL 是这样的

_http://localhost:8080/ond/ONDList.seam?state=DE&actionMethod=pages%2Flist%2FONDList.xhtml%3AlistControl.setFullList%28true%29

然后我再次点击我得到

_http://localhost:8080/ond/ONDList.seam?maxResults=2&state=DE&actionMethod=pages%2Flist%2FONDList.xhtml%3AlistControl.setFullList%28false%29

期望得到的只是这两个网址:

_http://localhost:8080/ond/ONDList.seam?maxResults=15&firstResult=0&state=AL

_http://localhost:8080/ond/ONDList.seam?state=AL

这些 URL 上的额外参数从何而来?

【问题讨论】:

    标签: jsf url-rewriting seam


    【解决方案1】:

    由于s:link 使用的是http GET 而不是http POST,所以seam 需要以某种方式知道要调用哪个动作。因此它会在请求参数中附加操作。

    如果您想避免在请求参数中看到任何内容,则必须使用生成 http post 的链接,例如 &lt;h:commandLink&gt;

    但是,我看不出您有任何理由要隐藏该操作。 如果您担心请求伪造,您可以通过在组件或方法上使用 @Restrict@Permission 注释来强制执行该操作。

    【讨论】:

    • 好的,这有点道理。我认为我有一个非常基本的问题是完全理解 POST 和 GET 之间的区别。似乎使用 POST 时,您传递的任何信息都不会显示在 URL 上,而使用 GET 时,您传递的所有信息都必须显示在 URL 上。您必须使用 URL 重写过滤之类的解决方法来仅显示 URL 上的一些信息。有了这些信息,我会再玩一些。谢谢。
    • 是的,您必须了解这里的区别。通过谷歌搜索 http post 和 http get 了解更多信息
    【解决方案2】:

    没错。因为你在 s:seam 中有一个动作参数。该动作将在后端执行,然后将评估页面导航规则。

    也许您想使用 h:outputLink?

    【讨论】:

      【解决方案3】:

      您可以使用 URL 重写过滤器使 URL 看起来更好。

      【讨论】:

        猜你喜欢
        • 2014-07-20
        • 2012-12-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-28
        • 1970-01-01
        • 2014-03-28
        相关资源
        最近更新 更多