使用p:selectOneMenu导航

DD.*_*DD. 5 navigation jsf selectonemenu primefaces jsf-2

我正在使用选择一个菜单来导航到我网站的不同部分:

<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>
Run Code Online (Sandbox Code Playgroud)

是否有更多SEO友好的方式这样做?我担心JavaScript链接不会被跟踪.

Bal*_*usC 7

使用自定义内容<p:column>与其中一个<h:link>.

豆:

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"));
}
Run Code Online (Sandbox Code Playgroud)

视图:

<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>
Run Code Online (Sandbox Code Playgroud)

请注意,这不适用于List<SelectItem>单个<f:selectItem>条目.你真的需要提供List<Entity>(其中EntityPage在上面的例子).

这会生成一个<table>具有完全可爬行(和可点击!)的<a>元素.

也可以看看: