2016-06-24 8 views
1

Ich habe eine statische Seite, die ich auf eine bestimmte URL bedingt liefern möchte.
Mit Spring-Boot kann ich Seiten in den Ressourcenverzeichnis static oder public platzieren und haben sie an alle gedient, aber wenn ich den Zugriff beschränken oder den Zugriff auf sie über eine Feature-Flag deaktivieren möchten, dann ist dies nicht geeignet.
Mithilfe einer Vorlagen-Engine kann ich die Seite als Vorlage laden und einen Verweis auf die Ansicht zurückgeben. Allerdings ist meine Anwendung ziemlich einfach und ich möchte keine Template-Engine nutzen, wenn ich sonst keine brauche.
Ich möchte in der Lage sein, einen Controller zu verwenden, um das Wetter zu bestimmen, auf dem die Seite bedient wird oder nicht. Was ist der einfachste Weg, wie eine Steuerung eine statische Seite zurückgibt?Spring-Boot - Bedingte statischen Inhalt ohne Vorlage-Engine

+0

Erstellen Sie einen Filter, um den Zugriff zu steuern. So funktioniert auch Spring Security. – Andreas

Antwort

1

Der einfachste Weg, den ich gefunden habe, um statische Inhalte von einem Controller zurückzugeben, ist die Rückgabe eines Resource. Es gibt mehrere Implementierungen der Resource Klasse, aber ClassPathResource macht am meisten Sinn für eine Spring-Boot-App.
In einer normalen Spring-Boot-Anwendung zeigt das folgende Beispiel src/main/resources/path/to/mypage.html an, wenn true ist, und andernfalls 404.

@RequestMapping("mypage.html") 
public Resource myPage() { 
    if(mycondition()) { 
     return new ClassPathResource("path/to/mypage.html"); 
    } else { 
     throw new ResourceNotFoundException(); 
    } 
} 

@ResponseStatus(HttpStatus.NOT_FOUND) 
private static class ResourceNotFoundException extends RuntimeException { 
    public ResourceNotFoundException() {} 
} 
Verwandte Themen