2016-08-18 1 views
0

J'utilise actuellement rewrite-config-prettyfaces 3.4.0.Final avec Mojarra 2.2.13 sur JRE 8 dans WildFly 10. Avec cette configuration (certains détails sont ci-dessous) tout fonctionne bien . Maintenant, je voudrais abandonner le fichier pretty-config.xml et passer à la règle RewriteConfiguration. Une fois que j'ai créé ceci et mappé ma carte d'URL de pretty-config dans les règles, mon application semble fonctionner correctement. Cependant, j'ai remarqué que mon action h: commandLink n'est plus invoquée. Quand je reviens à pretty-config.xml cela fonctionne très bien, revenez .. urgs. Avez-vous la moindre idée de la raison pour laquelle cela ne fonctionne pas avec RewriteConfiguration?commandLink pas invoquer l'action avec réécriture RewriteRule activé

Mon classpath contient les pots de ré-écriture suivantes:

  • -rewrite servlet-3.4.0.Final.jar
  • ré-écriture-config-prettyfaces-3.4.0.Final.jar (mais on laisse tomber dans l'installation ne fonctionne pas)

Ci-dessous vous pouvez trouver quelques extraits de mon code.

Merci beaucoup!

Ma jolie config a cette configuration

<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> 

Mon fichier 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; 
    } 
} 

Mon fichier dummy.xhtml simplifié ressemble à ceci:

Remarque: La section correspondante avec commandLink fait partie de catalogDashboard.jsf. Veuillez considérer la règle de réécriture de mannequins manquante comme étant présente.

<?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> 

Mon haricot avec la méthode d'invoquer via une action 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

Pourriez-vous inclure les fichiers JAR de réécriture que vous avez sur votre chemin de classe? – chkal

+0

@chkal J'ai mis à jour le post. C'est seulement rewrite-servlet-3.4.0.Final.jar – cpoeth

Répondre

1

S'il vous plaît assurez-vous d'inclure Réécrire module d'intégration JSF dans vos dépendances:

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

Le rewrite-config-prettyfaces dépend sur ce module depuis 3.4.0.Final. Donc, si vous abandonnez l'intégration de PrettyFaces, vous perdrez également le module d'intégration JSF de base qui pourrait mener à quelque chose comme ça.

+0

Ah oui, c'est logique. J'essayais de comprendre ce que cela ferait, mais oui, cela pourrait être le problème. – Lincoln

+0

Génial! Cela a fait l'affaire! Merci pour votre aide les gars! Btw, j'aime votre cadre! :) – cpoeth