uPortal

Enterprise open source portal built by and for the higher education community.

This project is maintained by uPortal-Project

Modèle de donnée d’une Soffit

Pour être d’une quelconque utilité, une vraie Soffit doit aller plus loin qu’un simple Hello World!. Une Soffit embarque avec elle un modèle de données riche pour échanger des données entre le portail et votre application. Il y a (actuellement) cinq objets dans ce modèle de donnée :

Accèder au Modèle de Donnée depuis une JSP

Tous ces objets sont définis dans l’Expression Language (EL) Context dans laquelle votre fichier .jsp s’exécute. Utilisez une notation en camel-case pour les référencer, par exemple…

<h2>Hello ${bearer.username}</h2>

L’Annotation @SoffitModelAttribute

Parfois, le modèle de données fourni par une Soffit ne suffit pas - parfois vous avez besoin de définir vos propres objets pour le rendu d’une JSP. Pour une soffit basée sur Spring Boot, l’annotation @SoffitModelAttribute peut satisfaire ce besoin.

Exemples @SoffitModelAttribute

Annotatez un bean Spring avec @SoffitModelAttribute pour rendre le bean entier disponible depuis votre JSP.

@SoffitModelAttribute("settings")
@Component
public class Settings {

    public int getMaxNumber() {
        return 100;
    }

}

Annoter une méthode sur un bean Spring avec @SoffitModelAttribute pour permettre à votre Soffit d’invoquer la méthode et retourner la valeur disponible dans votre JSP.

@Component
public class Attributes {

    @SoffitModelAttribute("bearerJson")
    public String getBearerJson(Bearer bearer) {
        String result = null;
        try {
            result = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(bearer);
        } catch (JsonProcessingException e) {
            final String msg = "Unable to write the Bearer object to JSON";
            throw new RuntimeException(msg, e);
        }
        return result;
    }

}

Les signatures des méthodes annotées avec @SoffitModelAttribute sont flexibles; vous pouvez prendre n’importe lequel, tous ou aucun des objets suivants en tant que paramètres, et ce, dans n’importe quel ordre: