2016-08-18 2 views
0

Ich benutze rewrite-config-prettyfaces 3.4.0.Final mit Mojarra 2.2.13 auf JRE 8 in WildFly 10. Mit diesem Setup (einige Details sind unten) funktioniert alles gut . Jetzt möchte ich die pretty-config.xml Datei löschen und zu der regelbasierten RewriteConfiguration wechseln. Sobald ich dies erstellt und meine Pretty-Config-URL-Mapping in Regeln zugeordnet habe, scheint meine Anwendung gut zu funktionieren. Mir ist jedoch aufgefallen, dass meine Aktion h: commandLink nie mehr aufgerufen wird. Wenn ich zu pretty-config.xml zurückwechsle funktioniert es gut, schalte zurück .. urgs. Hast du eine Ahnung, warum das nicht mit der RewriteConfiguration funktioniert?commandLink nicht aufrufen Aktion mit Rewrite RewriteRule aktiviert

Meine Classpath enthält folgende Rewrite Gläser:

  • Rewrite-Servlet-3.4.0.Final.jar
  • Rewrite-config-prettyfaces-3.4.0.Final.jar (aber diese fallen gelassen wird in der nicht funktionierenden Einrichtung)

Im Folgenden finden Sie einige Schnipsel meines Codes.

Vielen Dank!

Mein hübsch-config hat diese Konfiguration

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

Meine RewriteConfiguration Datei

@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; 
    } 
} 

Meine vereinfachte dummy.xhtml Datei wie folgt aussieht:

Hinweis: Der relevante Abschnitt mit dem Befehl Link ist eigentlich ein Teil von catalogDashboard.jsf. Bitte beachten Sie die fehlende Pseudo-Rewrite-Regel als vorhanden.

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

Meine Bohne mit dem Verfahren über command Aktion

@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

Könnten Sie die JAR-Dateien, die Sie auf Ihrem Klassenpfad gespeichert haben, einbeziehen? – chkal

+0

@chkal Ich habe den Beitrag aktualisiert. Es ist nur rewrite-servlet-3.4.0.Final.jar – cpoeth

Antwort

1

Bitte stellen Sie sicher, rufen Sie umfassen JSF Integration Rewrite-Modul in der Abhängigkeiten:

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

Die rewrite-config-prettyfaces hängt auf diesem Modul seit 3.4.0.Final. Wenn Sie also die PrettyFaces-Integration aufgeben, verlieren Sie auch das Kern-JSF-Integrationsmodul, das zu so etwas führen könnte.

+0

Ah ja, das macht Sinn. Ich habe versucht herauszufinden, was das tun würde, aber ja, das könnte das Problem sein. – Lincoln

+0

Super! Das hat den Trick gemacht! Danke für eure Hilfe! Übrigens, ich mag dein Framework! :) – cpoeth