2013-10-08 2 views
3

Мое переписывание с PrettyFaces для страницы с ошибкой не работает для h: link, и я не понимаю, почему.PrettyFaces и h: тег ссылки результата не перенаправляют на чистый URL

Моя ссылка должна быть перенаправлена ​​на login.xhtml, и это должно быть /Login.

Что происходит, мне что-то не хватает?

Мои правила перезаписи навигации:

<navigation-rule> 
    <from-view-id>/pageNotFound.xhtml</from-view-id> 
    <navigation-case> 
     <from-outcome>login</from-outcome> 
     <to-view-id>/login.xhtml</to-view-id> 
     <redirect/> 
    </navigation-case> 
</navigation-rule> 

Моя web.xml для обработки страниц ошибок и Хорошенькая конфигурации фильтра:

<error-page> 
    <error-code>404</error-code> 
    <location>/pageNotFound.xhtml</location> 
</error-page> 
<filter> 
    <filter-name>Pretty Filter</filter-name> 
    <filter-class>com.ocpsoft.pretty.PrettyFilter</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>Pretty Filter</filter-name> 
    <url-pattern>/*</url-pattern> 
    <dispatcher>FORWARD</dispatcher> 
    <dispatcher>REQUEST</dispatcher> 
    <dispatcher>INCLUDE</dispatcher> 
</filter-mapping> 

Мой довольно-config.xml:

<url-mapping id="login"> 
    <pattern value="/Login" /> 
    <view-id value="/login.xhtml" /> 
</url-mapping> 

Моя страницаNotFound.xhtml:

<rich:panel style="width:50%;margin-top:100px;" header="Page Not Found."> 
    <h:link value="Login page" outcome="login" /> 
</rich:panel> 
+0

Если вы используете час: commandLink с действием = «логин», это работает ... но я хотел бы, почему он не работает с результатами и ч: ссылка ... – ZheFrench

ответ

2

В принципе, вы смешиваете идентификатор вида Prettyfaces с JSF. Вы не можете напрямую использовать этот идентификатор в контексте JSF, вы need to tell это то, что это pretty id. Это должно работать:

<h:link value="Login page" outcome="pretty:login" /> 

Кроме того, если вы предпочитаете использовать JSF идентификатор, вы можете использовать /логин непосредственно вместо: фильтр

<h:link value="Login page" outcome="/login" /> 

Prettyfaces' следует учитывать, что это отображается идентификатор и перенаправить на ваш /Войти url напрямую.

+0

Уже проверить, что, и я получаю та же проблема со вторым, и с вашим первым решением он возвращает мне странное, вроде ocpsoft.mapping_id = login ... Вместо этого я решил использовать командную ссылку. Спасибо за комментарий. – ZheFrench

+0

Какое странное поведение, вы достигаете фильтра Prettyfaces при этом? –

+0

Вы имеете в виду мой Pretty Config Filter? Я размещаю конфигурацию ниже. Странное поведение, я согласен :), он должен работать, как вы упомянули, поэтому я не понимаю, что плохо настроено. – ZheFrench

0

Во-первых, вы не можете смешивать правила навигации JSF с PrettyFaces Mappings. Вы должны использовать тот или иной.

<rich:panel style="width:50%;margin-top:100px;" header="Page Not Found."> 
    <h:link value="Login page" outcome="login" /> 
</rich:panel> 

Я считаю, что «login» должен быть «/ login», иначе JSF может не решить проблему. Я могу ошибаться.

<rich:panel style="width:50%;margin-top:100px;" header="Page Not Found."> 
    <h:link value="Login page" outcome="/login" /> 
</rich:panel> 

 Смежные вопросы

  • Нет связанных вопросов^_^