Нежелательные параметры в URL после s: link и f: param - PullRequest
0 голосов
/ 28 января 2011

Вот код (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 и всеми результатами.

Исходный URL-адрес такой

_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

То, что я был ожидал , чтобы получить, было просто эти 2 URL:

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

и

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

Откуда берутся дополнительные параметры в этих URL?

Ответы [ 3 ]

0 голосов
/ 01 февраля 2011

Вы можете использовать фильтр перезаписи URL, чтобы URL выглядели лучше.

0 голосов
/ 01 февраля 2011

Поскольку s:link использует http GET , а не http POST , тогда seam должен каким-то образом знать, какое действие вызывать. Таким образом, он добавляет действие в параметр запроса.

Если вы не хотите видеть что-либо в параметре запроса, вам нужно использовать ссылку, которая выдает http post , такую ​​как <h:commandLink>

Однако я не вижу причин, по которым вы хотели бы скрыть действие. Если вы боитесь подделки запроса, вы можете применить действие, используя аннотацию @Restrict или @Permission для компонента или метода.

0 голосов
/ 31 января 2011

Это верно. Потому что у вас есть параметр действия в s: seam. Действие будет выполнено в бэкэнде, а затем будут оценены правила навигации по страницам.

Может быть, вы хотите использовать h: outputLink?

...