2016-08-18 4 views
0

В настоящее время я использую rewrite-config-prettyfaces 3.4.0.Final с Mojarra 2.2.13 на JRE 8 в WildFly 10. С этой настройкой (некоторые подробности ниже) все работает нормально , Теперь я хотел бы удалить файл pretty-config.xml и переключиться на RewriteConfiguration, основанную на правилах. После того, как я создал это и сопоставил мое корректное отображение URL-адресов в правилах, мое приложение работает нормально. Тем не менее, я заметил, что мое действие h: commandLink больше не вызвано. Когда я вернусь к pretty-config.xml, он отлично работает, переключитесь обратно. У вас есть какая-то подсказка, почему это не работает с RewriteConfiguration?commandLink не вызывает действие с rewrite RewriteRule активировано

Мой путь к классам содержит следующие переписывания банки:

  • переписывают-сервлет-3.4.0.Final.jar
  • перезаписи-конфигурации-prettyfaces-3.4.0.Final.jar (но это отбрасывается в нерабочем состоянии)

Ниже вы можете найти фрагменты моего кода.

Большое спасибо!

Мой довольно-конфигурации имеет такую ​​конфигурацию

<pretty-config xmlns="http://ocpsoft.org/schema/rewrite-config-prettyfaces" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
       xsi:schemaLocation="http://ocpsoft.org/schema/rewrite-config-prettyfaces 
         http://ocpsoft.org/xml/ns/prettyfaces/rewrite-config-prettyfaces.xsd"> 

    <url-mapping id="start"> 
     <pattern value="/#{lang}"/> 
     <view-id value="/dashboard.jsf"/> 
    </url-mapping> 
    <url-mapping id="download"> 
     <pattern value="/#{lang}/downloadReport.html"/> 
     <view-id value="/downloadReport.jsf"/> 
    </url-mapping> 
    <url-mapping id="catalog"> 
     <pattern value="/#{lang}/catalogue/#{catalogName}"/> 
     <view-id value="/catalogDashboard.jsf"/> 
    </url-mapping> 
    <url-mapping id="violations"> 
     <pattern value="/#{lang}/catalogue/#{catalogName}/violations"/> 
     <view-id value="/violations.jsf"/> 
    </url-mapping> 
    <url-mapping id="distributions"> 
     <pattern value="/#{lang}/catalogue/#{catalogName}/distributions"/> 
     <view-id value="/distributions.jsf"/> 
    </url-mapping> 

</pretty-config> 

Мой RewriteConfiguration файл

@RewriteConfiguration 
public class ApplicationNavigationConfigurationProvider extends HttpConfigurationProvider { 

    @Override 
    public Configuration getConfiguration(ServletContext servletContext) { 
     return ConfigurationBuilder.begin() 
       .addRule(TrailingSlash.remove()) 
       .addRule(Join.path("/{lang}").to("/dashboard.jsf")) 
       .addRule(Join.path("/{lang}/downloadReport.html").to("/downloadReport.jsf")) 
       .addRule(Join.path("/{lang}/catalogue/{catalogName}").to("/catalogDashboard.jsf")) 
       .addRule(Join.path("/{lang}/catalogue/{catalogName}/violations").to("/violations.jsf")) 
       .addRule(Join.path("/{lang}/catalogue/{catalogName}/distributions").to("/distributions.jsf")); 
    } 

    @Override 
    public int priority() { 
     return 0; 
    } 
} 

Мой упрощена файл dummy.xhtml выглядит следующим образом:

Примечание. Соответствующий раздел с commandLink фактически является частью catalogDashboard.jsf. Пожалуйста, рассмотрите недостающее правило переписывания манекена как присутствующее.

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://xmlns.jcp.org/jsf/html" 
     xmlns:f="http://xmlns.jcp.org/jsf/core"> 

<f:view> 
    <h:body> 
     <h:outputText value="#{harvesterBean.currentRepository.name}"/> 
     <h:form> 
      <h:commandLink action="#{harvesterBean.updateAttachment(1)}" value="Test action invocation"> 
       <f:param name="catalogName" value="#{request.getParameter('catalogName')}"/> 
      </h:commandLink> 
     </h:form> 
    </h:body> 
</f:view> 
</html> 

Мой боб с помощью метода для вызова с помощью действия commandLink

@ViewScoped 
@Named 
public class HarvesterBean implements Serializable { // updated: implements Serializable 

    @Inject 
    private HarvesterClientActionImpl harvesterClientAction; 

    @Inject 
    private CurrentCatalogBean currentCatalogBean; 

    private Repository currentRepository; 
    private Harvester currentHarvester; 
    private Run currentRun; 
    private List<RunLog> logs; 
    private String selectedAttachment; 

    @PostConstruct 
    public void init() { 
     currentRepository = harvesterClientAction.retrieveRepository(currentCatalogBean.getCurrentCatalog().getTitle()); 
     currentHarvester = harvesterClientAction.retrieveHarvester(currentRepository.getSourceHarvester()); 
     currentRun = harvesterClientAction.retrieveLastRun(currentHarvester.getId()); 
     logs = harvesterClientAction.retrieveRunLogs(currentHarvester.getId(), currentRun.getId()); 

    } 

    // This method is not invoked when using the RewriteConfiguration instead of pretty-config.xml 
    public void updateAttachment(long logId) { 
     selectedAttachment = harvesterClientAction.retrieveAttachment(currentHarvester.getId(), currentRun.getId(), logId); 
    } 
// getter and setter 
} 
+0

Не могли бы вы включить Rewrite JAR-файлы, которые у вас есть на пути к классу? – chkal

+0

@chkal Я обновил сообщение. Это только rewrite-servlet-3.4.0.Final.jar – cpoeth

ответ

1

Пожалуйста, убедитесь, что вы включили Перепишите модуль интеграции JSF в ваших зависимости:

<dependency> 
    <groupId>org.ocpsoft.rewrite</groupId> 
    <artifactId>rewrite-integration-faces</artifactId> 
    <version>3.4.0.Final</version> 
    </dependency> 

rewrite-config-prettyfaces зависит на этом модуле с 3.4.0.Final. Поэтому, если вы потеряете интеграцию PrettyFaces, вы также потеряете основной модуль интеграции JSF, который может привести к чему-то подобному.

+0

Ах да, это имеет смысл. Я пытался выяснить, что будет с этим делать, но да, это может быть проблемой. – Lincoln

+0

Удивительный! Это сделал трюк! Спасибо за помощь ребята! Кстати, мне нравится ваша фреймворк! :) – cpoeth

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