使用p:selectOneMenu导航 [英] Navigate using p:selectOneMenu
问题描述
我正在使用一个选择菜单来导航到网站的不同部分:
I'm using a select one menu to do navigation to different parts of my site:
<p:selectOneMenu value="#{navigator.outcome}">
<f:selectItem itemLabel="Select page..." />
<f:selectItem itemValue="page1" itemLabel="Page 1" />
<f:selectItem itemValue="page2" itemLabel="Page 2" />
<f:selectItem itemValue="page3" itemLabel="Page 3" />
<p:ajax event="change" listener="#{navigator.navigate}" />
</p:selectOneMenu>
是否有一种更加SEO友好的方式来做到这一点?我担心JavaScript链接不会被跟踪.
Is there a more SEO friendly way of doing this? I'm worried that the JavaScript links won't get followed.
推荐答案
使用带有<h:link>
的<p:column>
的自定义内容.
Use custom content with <p:column>
with therein a <h:link>
.
Bean:
private List<Page> pages;
@PostConstruct
public void init() {
pages = new ArrayList<Page>();
pages.add(new Page("Page 1", "/page1.xhtml"));
pages.add(new Page("Page 2", "/page2.xhtml"));
pages.add(new Page("Page 3", "/page3.xhtml"));
}
查看:
<p:selectOneMenu var="page">
<f:selectItems value="#{bean.pages}" var="page" itemLabel="#{page.title}" />
<p:column>
<h:link value="#{page.title}" outcome="#{page.viewId}" />
</p:column>
</p:selectOneMenu>
请注意,这不适用于List<SelectItem>
或单个<f:selectItem>
条目.您确实需要提供List<Entity>
(在上面的示例中,Entity
是Page
).
Note that this doesn't work with List<SelectItem>
nor individual <f:selectItem>
entries. You really need to provide a List<Entity>
(wherein Entity
is Page
in the above example).
这会生成一个<table>
,其中包含完全有价值且可抓取(并且可单击!)的<a>
元素.
This generates a <table>
with fullworthy and crawlable (and clickable!) <a>
elements.
- What is the difference between redirect and navigation/forward and when to use what?
- How to navigate in JSF? How to make URL reflect current page (and not previous one)
这篇关于使用p:selectOneMenu导航的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!