Gibt es eine JSTL EL (Expression Language), die äquivalent zu c: url /

8

Wir verwenden das tomcat urlrewrite-Plugin, um ausgehende und eingehende URLs neu zu schreiben. Um dies zu tun, müssen Sie das JSTL-Tag verwenden.

Das funktioniert hervorragend für saubere URLs und i18n, aber es erzeugt hässlichen Code, einschließlich Tags innerhalb von Tags, wie folgt:

%Vor%

oder:

%Vor%

Eine Alternative besteht darin, eine Variable wie folgt zu verwenden:

%Vor%

Das ist wirklich sauber, aber ausführlich.

Gibt es eine Ausdruck-freundliche Art, dies zu tun?

Ich habe irgendwie auf etwas wie:

gehofft %Vor%

Danke.

    
JBCP 31.05.2012, 19:49
quelle

3 Antworten

0

Die Lösung, die ich schließlich gefunden habe, war die Verwendung von benutzerdefinierten Tags, um das Problem für CSS und JS zu lösen. Eine ähnliche Lösung könnte natürlich auch auf Tags angewendet werden, obwohl ich die Notwendigkeit noch nicht hatte.

%Vor%

Das CSS-Tag sieht so aus, das Javascript ist offensichtlich sehr ähnlich:

%Vor%

Vergessen Sie nicht, die Tags in Ihr jsp zu importieren:

%Vor%

Die benutzerdefinierte EL-Lösung wäre sauberer, wenn einige Umstände hinzugefügt würden. Wenn Sie jedoch Unterstützung für zusätzliche Parameter oder Attribute hinzufügen möchten, ist wahrscheinlich ein Tag der richtige Weg.

    
JBCP 21.12.2012, 16:18
quelle
2

Es gibt nichts aus der Box, aber nichts hindert Sie daran, Ihre eigenen EL-Funktionen zu schreiben und verwenden Sie so etwas:

%Vor%

Ich glaube nicht, dass es lesbarer ist als das Standard-Tag c: url, und es wäre noch schlimmer, wenn es Parameternamen und -werte akzeptieren müsste.

Siehe Ссылка zum Definieren und Verwenden von EL-Funktionen.

    
JB Nizet 31.05.2012 19:56
quelle
1

Wo sind mehrere Ansätze.

1) Binden Sie die Basis an die Variable in einem gemeinsamen Fragment :

common.jspf :

%Vor%

oder wie:

%Vor%

und enthalten ein Fragment auf jeder Seite :

%Vor%

2) Verwenden Sie ${pageContext.request.contextPath} everywhere:

%Vor%

3) ist mein Favorit: Filter hinzufügen, die die Basis für das Attribut enthalten:

/src/java/company/project/web/filter/BaseFilter.java

%Vor%

und registrieren diesen Filter in web.xml :

%Vor%

und verwenden Sie die cleane Syntax (wie oben, aber ohne die Pflichtfelderfragmente einzubeziehen):

%Vor%

HINWEIS Ich setze zusätzliche Attribute in diesem Filter, um beispielsweise zwischen der Entwicklung und der verkleinerten Version von CSS / JS zu wechseln:

%Vor%

und entsprechender JSP-Code:

%Vor%

Der Initialparameter min kann extern in der WAR-Datei im contex-Deployment-Deskriptor auf dev oder min gesetzt werden, wenn er nicht auf die verkleinerte Version zurückgesetzt wird, wenn er nicht gesetzt ist.

4) Verwenden Sie Skripte :

%Vor%     
gavenkoa 26.10.2015 21:33
quelle

Tags und Links