这是代码(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>
目标是使用此链接在结果列表displayin maxResults和所有结果之间切换。
原始网址是
_http://localhost:8080/ond/ONDList.seam?maxResults=2&state=DE
当我点击链接时,我得到了正确的功能,但结果是这个
_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
这些网址上的额外参数来自哪里?
答案 0 :(得分:0)
这是对的。因为你在s:seam中有一个action参数。该操作将在后端执行,然后将评估页面导航规则。
也许您想使用h:outputLink?
答案 1 :(得分:0)
您可以使用网址重写过滤器使网址看起来更漂亮。
答案 2 :(得分:0)
由于s:link
正在使用 http GET 而不是 http POST ,因此seam需要以某种方式知道要调用的操作。因此,它会将操作附加到请求参数中。
如果您想避免在请求参数中看到任何内容,则必须使用生成 http post 的链接,例如<h:commandLink>
但是,我没有看到任何你想隐藏行动的理由。
如果您害怕请求伪造,可以使用组件或方法上的@Restrict
或@Permission
注释来强制执行操作。