2013-10-08 6 views
6

Я попробовал последнюю версию JavaServer Faces 2.2 (Mojarra 2.2.4) и заметил, меняю строку запроса в этом нежелательным способом:Как отключить jftfdi Params jffi запросов в JSF

page.jsf?jftfdi=&jffi= 

вместо

page.jsf 

Я обнаружил, что это новая функция JSF 2.2. Но эти параметры запроса (jftfdi, jffi) испортили мне SEO-дружественные URL-адреса. Как я могу отключить его?

+1

http://stackoverflow.com/questions/17594856/what-are-jftfdi-jffi-doing-to- my-query-string – Husam

ответ

7

Это ошибка в Мохарре. Они не должны были добавляться, когда нет никаких средств для любой конфигурации навигации по потоку (by the new @FlowScoped annotation and <j:flow-xxx> tags).

В основном, OutcomeTargetRenderer класса, который отвечает за вывод HTML поколения <h:link> и <h:button> неправильно проверка, если NavigationCase#getToFlowDocumentId() возвращает непредставленные null перед добавлением навигационных параметров потока. Однако на основе the javadoc базовая реализация никогда не возвращает null, а пустую строку. Поэтому рендеринг всегда считает, что он находится в середине навигации по потоку и всегда добавляет связанные параметры запроса jftfdi и jffi. Исправить это, чтобы он также проверял, если он возвращает непустую строку.

Я сообщил об этом как issue 3054, и они подтвердили, что это ошибка и в настоящее время работают над ней. Исправление, вероятно, будет доступно в Mojarra 2.2.5.

Обновление: на данный момент, менее чем через день, оно установлено для 2.2.5.


К слову, jftfdi означает «javax.faces потока ID документ», который указан следующим образом в the javadoc:

Компонента, оказываемая рендерерами компоненты-семействе javax.faces.OutcomeTarget должен использовать этот константа как имя параметра для параметра, представляющего идентификатор определяющего документа потока, который этот компонент будет вводить.

и jffi означает «javax.faces Flow ID», которая определяется следующим образом в the javadoc:

Компоненты, оказываемые рендереров компонента-семейства javax.faces.OutcomeTarget должны использовать эту константу в качестве имени параметра для параметр, представляющий идентификатор потока потока, который этот компонент будет вводить.

-1

У меня была такая же ошибка раньше. Происхождение этой ошибки - версия jsf. Просто попробуйте обновить версию до 2.2.5, как это:

<dependency> 
     <groupId>com.sun.faces</groupId> 
     <artifactId>jsf-api</artifactId> 
     <version>2.2.5</version> 
    </dependency> 
    <dependency> 
     <groupId>com.sun.faces</groupId> 
     <artifactId>jsf-impl</artifactId> 
     <version>2.2.5</version> 
    </dependency> 

Надежда это полезно

+1

Это уже подтвержденный и принятый ответ: ** «Обновление: на данный момент, менее чем через день, оно исправлено для 2.2.5.»** Таким образом, этот ответ ничего не добавляет к вопросу. Можете ли вы объяснить, почему вы думаете, что этот ответ должен быть там? – Kukeltje

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

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