Идентификаторы представления не должны содержать отображение FacesServlet
.Он должен представлять физический путь / имя файла.Измените .html
на .xhtml
.Вы также должны удалить ?faces-redirect=true
и вместо этого добавить <redirect />
к <navigation-case>
.
<navigation-rule>
<from-view-id>/pages/test/test.xhtml</from-view-id>
<navigation-case>
<from-outcome>write</from-outcome>
<to-view-id>/pages/test/test-write.xhtml</to-view-id>
<redirect />
</navigation-case>
</navigation-rule>
Кстати, это старый стиль JSF 1.x.Знаете ли вы о новой неявной навигации JSF2?Вы можете просто вернуть "/pages/test/test-write.xhtml?faces-redirect=true"
.
public String test() {
return "/pages/test/test-write.xhtml?faces-redirect=true";
}
Больше нет необходимости в раздутых случаях навигации XML.
Кроме того, если ваш метод действия на самом деле больше ничего не делает, то вы также можете простовместо этого поместите именно это возвращаемое значение в атрибут action
.
<h:commandButton ... action="/pages/test/test-write.xhtml?faces-redirect=true" />
Более того, если это обычная постраничная навигация, вместо этого используйте <h:link>
.Это более удобно для SEO, так как поисковые роботы не индексируют POST-формы:
<h:link ... outcome="/pages/test/test-write.xhtml" />