Навигация по странице шва с включениями - PullRequest
0 голосов
/ 01 июня 2010

Я использую правила навигации по шовным страницам. и не испытывал никаких проблем с добавлением правил, которые перенаправляют с одной страницы на другую. Но так как я разработал свои просмотры страниц с использованием этого перенаправления, просто больше не происходит для этих страниц. Пытался определить правило для включаемого представления, затем для представления, которое включает в себя другие (что для меня было более логичным), но ни одно из них не работает Есть ли что-то особенное в навигации по страницам в шве с использованием включенного view-id?

main.xhtml:

<h:outputLabel value="Details:"/>`

<a4j:include viewId="contacts.xhtml" id="contactsDetails"/>`

<page view-id="/*" login-required="true">
    <navigation>
        <rule if="#{myBean.readyToSee}">
            <redirect view-id="/see-contat.xhtml"/>
        </rule>
    </navigation>
</page>

Я использую jsf, xhtml в качестве просмотров моей страницы.

Спасибо

1 Ответ

4 голосов
/ 01 июня 2010

Мне сложно ответить на этот вопрос, потому что я просто не понимаю его. Однако я постараюсь угадать, о чем вы спрашиваете.

У вас есть страница, то есть: /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>

Выше будет работать. Если это не так, ошибка находится где-то еще в вашем коде.

...