Мне сложно ответить на этот вопрос, потому что я просто не понимаю его. Однако я постараюсь угадать, о чем вы спрашиваете.
У вас есть страница, то есть: /somePage.xhtml
, и внутри этой страницы вы включаете некоторые другие страницы.
Я склонен писать все страницы навигации в pages.xml
. Мне нравится иметь все в одном месте, потому что это делает вещи чище и проще в обслуживании.
Вы можете использовать подстановочные знаки также в файле pages.xml
.
Так что вы можете сделать что-то вроде этого.
<page login-required="true" view-id="/admin/*">
<restrict>#{s:hasRole('orgadmin') or s:hasRole('sysadmin')}</restrict>
<navigation from-action="#{userAdmin.editUser}">
<redirect view-id="/admin/create_user.xhtml" />
</navigation>
<navigation from-action="#{applicationProcessAdmin.saveScheme}">
<rule if-outcome="failure">
<redirect view-id="/admin/processes.xhtml" />
</rule>
</navigation>
</page>
В приведенном выше примере я использую подстановочный знак, чтобы сказать, что вся навигация, которая происходит из / admin / *, которая использует какое-то конкретное действие, должна перенаправляться на некоторую страницу, которая у меня есть.
Вы также можете быть очень конкретны со страницами
<page login-required="true" view-id="/officer/admin/contacts.xhtml">
<begin-conversation join="true" />
<navigation from-action="#{officerAdmin.saveContact}">
<redirect/>
</navigation>
</page>
Если вам это не поможет, вам нужно уточнить свой вопрос.
Обновление
Попробуйте изменить
<page view-id="/*" login-required="true">
<navigation>
<rule if="#{myBean.readyToSee}">
<redirect view-id="/see-contat.xhtml"/>
</rule>
</navigation>
</page>
На это вместо
<page view-id="/*" login-required="true">
<navigation from-action="#{myBean.readyToSee}">
<rule if="#{myBean.readyToSee}">
<redirect view-id="/see-contat.xhtml"/>
</rule>
</navigation>
</page>
ОБНОВЛЕНИЕ 2
Сбой навигации? Или это только некоторые?
Попробуйте удалить /*
при просмотре страницы и заменить просто *
Если вы сделаете это, то сработает:
@Name("myBean")
public class MyBean {
public String doSomething() {
return "success";
}
}
Теперь из вашего xhtml (не имеет значения, с какой страницы это происходит)
<!-- Depending on what button you are using, <h:form> is mandatory -->
<h:form>
<h:commandButton value="TEST" action="#{myBean.doSomething}" />
</h:form>
А на ваших страницах xml
<page view-id="*">
<navigation from-action="#{myBean.doSomething}">
<rule if-outcome="success">
<redirect view-id="/test.xhtml" />
</rule>
</navigation>
</page>
Выше будет работать. Если это не так, ошибка находится где-то еще в вашем коде.