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
}
Könnten Sie die JAR-Dateien, die Sie auf Ihrem Klassenpfad gespeichert haben, einbeziehen? – chkal
@chkal Ich habe den Beitrag aktualisiert. Es ist nur rewrite-servlet-3.4.0.Final.jar – cpoeth