Vous ne pouvez pas appeler les méthodes directement dans JSF ou créer des variables, vous n'avez donc pas besoin d'importations. La seule façon est d'utiliser EL-Expressions. Depuis l'appel de méthodes statiques est impossible avec EL, vous devez vous créer un Bean, qui fait l'appel de KeycloakUriBuilder.fromUri...
Avec un nommé Bean vous appelez ses méthodes:
Exemple:
import java.io.Serializable;
import javax.enterprise.context.RequestScoped;
import javax.inject.Named;
//This Bean is available by default under the Name 'myBean', you can change it in the @Named Annotation if desired
@Named
@RequestScoped
public class MyBean implements Serializable {
public String myMethod(String inupt){
return "Hello " + input;
}
}
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core" >
<head></head>
<body>
<h:outputText value ="#{myBean.myMethod('world')}"/>
</body>
</html>
vous donnera ce HTML:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head></head>
<body>Hello world
</body>
</html>
La meilleure façon de montrer quelque chose sur la page est d'utiliser des accesseurs, si vous avez un champ avec getter et setter
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
Vous pouvez simplement utiliser
#{myBean.name}
JSF appellera le getter si elle a besoin de la valeur (pour la sortie) ou appelez le Setter s'il y a une valeur à définir (à partir des champs d'entrée)
Le <%@ page session="false" %>
n'est également ni nécessaire ni possible. Dans JSF, le Bean a une portée, cet exemple avec RequestScoped
devrait être un bon match pour <%@ page session="false" %>
- un bean Scoped demande vie seulement pour une demande, après que le haricot est disposé. Il existe de nombreux autres champs d'application, par ex. @SessionScoped
(à partir de javax.enterprise.context
) pour un bean qui reste actif tant que la session est active.
Comme mentionné par un autre utilisateur, ceux Scopes existe dans le CDI-Variant (Paquet javax.enterprise.context
) et une variante JSF (paquet javax.faces.bean
). Vous devriez utiliser le CDI-Variant, car le JSF-Variant pourrait être bientôt déprécié (voir here).
Explication des étendues voir here.
@hinneLins, J'ai compris. Alors qu'en est-il de la "<% @ page session =" false "%>" dans JSP? Comment réaliser ceci dans JSF? – user697911
J'ai mis à jour la réponse – hinneLinks
Veuillez poser de nouvelles questions dans les nouvelles questions. – BalusC