我想通过JSF commandLink标签从浏览器中的表中传递搜索结果的每个点击页面的数字。但它不起作用。我总是得到以下网址:http://localhost:myport/kundenVerwaltungWebClient/searchPerson.jsf
浏览器中的URL应如下所示: http://localhost:myport/kundenVerwaltungWebClient/searchPerson.jsf?pageNum=6
这是视图(searchPerson.xhtml):
... <!-- The paging links -->
<t:dataList value="#{controller.pages}" var="page">
<h:commandLink value="#{page}" actionListener="#{controller.page}"
rendered="#{page != controller.currentPage}" >
<f:param name="pageNum" value="#{page}" />
</h:commandLink>
<b><h:outputText value="#{page}" escape="false"
rendered="#{page == controller.currentPage}" /></b>
</t:dataList> ...
这是托管bean:
@ManagedBean @SessionScoped public class Controller { private String pageNum; ... //Getter and Setter }
有人可以告诉我这里的错误吗?
我提前感谢你。
答案 0 :(得分:1)
<h:commandLink>
发送POST请求,但您显然想发送GET请求。如果要发送GET请求,则需要使用<h:link>
而不是<h:commandLink>
。
<h:link value="#{page}" rendered="#{page != controller.currentPage}" >
<f:param name="pageNum" value="#{page}" />
</h:link>
(顺便说一下,这不需要<h:form>
,所以如果你在视图中没有任何其他命令链接/按钮,你可以安全地删除它)
要替换actionListener
作业,请将其放在视图的顶部:
<f:metadata>
<f:viewParam name="pageNum" value="#{controller.currentPage}" />
<f:event type="preRenderView" listener="#{controller.page}" />
</f:metadata>