h:linkwithを使用しincludeViewParams=trueてリスト ページとビュー ページの間を移動し、ビュー ページの URL をブックマーク可能にしますが、機能しません。以下は私のコードの関連部分です:
layout.xhtml (私のテンプレート):
<f:view locale="#{localeBean.lang}">
<ui:insert name="metadata"/>
Articles.xhtml (私のリストページ):
<h:form>
<p:datagrid var="item" value="articleController.items">
<p:column>
<h:link outcome="View_Articles?faces-redirect=true&includeViewParams=true" styleClass="view-details">
<h:outputText value="#{item.title}"/>
<f:param name="id" value="#{item.articleId}"/>
</h:link>
</p:column>
</p:datagrid>
</h:form>
View_Article.xhtml (私のビューの詳細ページ):
<ui:composition template="./WEB-INF/templates/layout.xhtml">
<ui:define name="metadata">
<f:metadata>
<f:viewParam name="id" value="#{articleController.id}" />
<f:viewParam name="id" value="#{articleLclController.id}"/>
</f:metadata>
</ui:define>
詳細情報: 私は JSF 2.2、ocpsoft 書き換えフィルター、primefaces ライブラリを使用しており、ArticleController.javaセッション スコープです。
私は次のことを試しました:
1-私は使用しh:commandLinkました; これで、ナビゲーションは機能しましたが、URL に view-params が含まれていませんでした
Articles.xhtml:
<h:commandLink id="viewArticleDetails" action="#{articleController.viewArticleByID()}" styleClass="view-details">
<h:outputText value="View Details"/>
<f:setPropertyActionListener target="#{articleController.id}" value="#{item.articleId}"/>
<f:setPropertyActionListener target="#{articleLclController.id}" value="#{item.articleId}"/>
</h:commandLink>
ArticleController.java: ...
private Long id;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
current = ejbFacade.find(id);
}
public String viewArticleByID(){
return "View_Article?faces-redirect=true&includeViewParams=true";
}
...
URLはあるとhttp://localhost:8080/testApp/en/View_Article?id=1思っていたのですが、`http://localhost:8080/testApp/en/View_Article
2-挿入http://localhost:8080/testApp/en/View_Article?id=1しましたが、どちらの場合も機能しました。