Tags

Tags : panel - form - popup

panel

Le tag panel est un tag basique qui crée un container pour du texte, etc. Par exemple, le contenu du tag <form> est affiché dans un panel.

Le code HTML est généré par une classe implémentant l'interface du panel. Il y a deux implémentations de l'interface du panel : une simple, par défaut, qui utilise uniquement des tableaux (fr.improve.struts.taglib.layout.util.BasicPanel), et une autre qui utilise des images (fr.improve.struts.taglib.layout.util.ImagePanel). La classe à utiliser peut être spécifiée en mettant la valeur de la propriété panel.class du fichier de propriétés du skin au nom de la classe d'implémentation du panel.

Exemple simple

				<layout:panel styleClass="FORM" key="title">
					<layout:message key="line1"/>
					<layout:message key="line2"/>
				</layout:panel>
			

Résultat (utilisant la classe par défaut)

Panel utilisant des images

La classe ImagePanel permet d'utiliser des images comme bordure du panel. Voici un exemple avec des coins arrondis :

Le nom des images doit être spécifié dans le fichier des propriétés du skin struts-layout. Ce fichier doit contenir le chemin d'accès aux clés des images suivantes :

  • top_LEFT
  • top
  • top_RIGHT
  • left
  • right
  • bottom_LEFT
  • bottom
  • bottom_RIGHT
  • height
  • top_height
  • bottom_height
  • width

Il est possible d'utiliser différents fichiers de propriétés en fonction du skin et de la classe du style CSS. Le site http://www.application-servers.com utilise la classe ImagePanel avec différents fichiers .properties. Pour plus d'informations concernant le fichier de configuration, voir la page sur les skins.

Emboîter des panels

Depuis struts-layout 0.5 il est possible de placer des panels et des collections dans des panels sans ajouter de code HTML supplémentaire.

Exemple :

				<%@page import="fr.improve.struts.webapp.layout.example.User,java.util.Vector" %>
				<%@taglib uri="/WEB-INF/struts-layout.tld" prefix="layout" %>
				<% Vector v = new Vector();
				   User user = new User();
				   user.setFullName("John Smith");
				   user.setUsername("jsmith");
				   user.setFromAddress("jsmith@mail.yahoo.com");
				   user.setReplyToAddress("jsmith@mail.yahoo.com");
				   User user2 = new User();
				   user2.setFullName("Jean Durand");
				   user2.setUsername("jdurand");
				   user2.setFromAddress("jdurand@mail.hotmail.fr");
				   user2.setReplyToAddress("jdurand@mail.yahoo.com");   
				   v.add(user); v.add(user2); pageContext.setAttribute("users", v);
				%>
				
				<layout:html>
					<layout:form action="registration.do" styleClass="FORM" key="Main form">
						<layout:panel styleClass="FORM" key="Nested panel" width="100%" align="center">
							<layout:panel styleClass="FORM" key="Nested panel" width="100%" align="center">
								<layout:text key="property1" property="action" styleClass="FIELD"/>
								<layout:text key="property2" property="action" styleClass="FIELD"/>
							</layout:panel>
							<layout:text key="property3" property="action" styleClass="FIELD"/>
						</layout:panel>
						<layout:collection name="users" styleClass="FORM" align="center" width="100%">
							<layout:collectionItem title="Name" property="fullName"/>
							<layout:collectionItem title="Login" property="username"/>
							<layout:collectionItem title="Login" property="username"/>
							<layout:collectionItem title="From address" property="fromAddress"/>
							<layout:collectionItem title="Reply toaddress" property="replyToAddress"/>
						</layout:collection>
					</layout:form>
				</layout:html>
			

Résultat . (l'espace entre les lignes peut être réglé grâce aux propriétés CSS).

Attributs

Nom de l'attribut Description
align -
arg0 -
arg0Name -
arg0Property -
arg1 -
arg2 -
arg3 -
arg4 -
bundle La clé de l'instance de MessageResources à utiliser. Si non spécifié, choisit par défaut l'application resources configuré pour la servlet action.
key Clé du message à utiliser pour le titre du panel.
name -
property -
width -
styleClass Classe du style CSS à utiliser pour afficher le panel.

form

Rend un formulaire. Un formulaire ressemble à un panel, mais inclut un tag html form. On peut y placer dedans des tags layout, collection or input. Si l'action du formulaire est une DispatchAction, la valeur par défaut du paramètre peut être spécifiée en indiquant l'attribut reqCode (request code). Cette valeur peut être changée en spécifiant l'attribut reqCode dans les boutons submit placés dans ce tag.

Le mode d'affichage du formulaire peut être spécifié en utilisant FormUtils.setFormDisplayMode(HttpServletRequest in_request, ActionForm in_form, int in_mode).

Tous les tags input supportent un attribut mode qui peut prendre les valeurs suivantes : X,Y,Z. X est le mode d'affichage du champ en mode création (creation mode), Y en mode édition (edit mode) et Z en mode consultation (inspect mode). Les valeurs autorisées sont E (edit), I (inspect, la valeur du champ est envoyée est envoyée comme une partie des données du formulaire), N (not displayed), H (hidden).

Attributs supplémentaires

Nom de l'attribut Description
action URL à laquelle ce formulaire sera soumis. Permet également de choisir l'ActionMapping, qui permet d'obtenir le bean associé au formulaire.
align Alignement du panel de ce formulaire. Par défaut : CENTER.
bundle La clé de l'instance de MessageResources à utiliser. Si non spécifié, choisit par défaut l'application resources configuré pour la servlet action.
enctype Type d'encodage à utiliser pour soumettre ce formulaire, si la méthode est POST. Cet attribut doit valoir "multipart/form-data" si vous utilisez le tag file qui permet l'upload de fichiers. Si non spécifié, l'ncodage par défaut du navigateur est utilisé ("application/x-www-form-urlencoded").
focus Nom du champ de ce formulaire sur lequel sera mis le focus initial grâce à une fonction JavaScript. Si non spécifié, aucun code JavaScript ne sera généré pour le focus initial. [EL]
key Clé du message à utiliser comme titre du formulaire. Le suffixe ".edit", ".create" ou ".inspect" est automatiquement ajouté à la fin de la clé en fonction du mode d'affichage du formulaire et si la clé résultant existe dans les messages.
method Méthode HTTP qui sera utilisée pour soumettre cette requête (GET, POST). Par défaut : POST.
name Nom de ce formulaire.
onreset, onsubmit Gestionnaires d'événements JavaScript.
reqCode Valeur du paramètre de l'action dans le cas d'une action héritant de la classe DispatchAction.
scope -
style Style CSS à utiliser pour afficher ce formulaire.
styleClass Classe du style CSS à utiliser pour afficher ce formulaire.
target Fenêtre dans laquelle ce fomulaire est soumis (comme par exemple un cadre).
type -
width Largeur du panel de ce formulaire.
acceptCharset Jeux de caractères acceptés.
schemeGénère une URL action URL absolue avec le scheme spécifié (http/https) [EL]

popup

Le tag popup peut être utilisé pour créer des fenêtre modales. Le popup s'ouvre et se ferme par Javascript.

Attributs

NomDescription
arg0, arg1, arg2, arg3, arg4Paramètres optionnels des messages. [EL]
keyClé du message composant le titre du popup
styleClassClasse css du panel
styleIdIdentifiant Javascript du popup

Exemple

<body>
	<layout:button onclick="openStrutsLayoutPopup('myPopup');">Open the popup</layout:button>
	<layout:popup styleClass="PANEL" styleId="myPopup">
		<layout:message key="some.message.key"/>
		<layout:button onclick="closeStrutsLayoutPopup('myPopup');">OK</layout:button>
	</layout:popup>
</body>