Question

Avant de commencer ma question, voici mes malheureuses limitations:

  1. J'utilise JSF 1.2, pas 2; donc pas de composant composite.
  2. J'utilise JSP pour le rendu au lieu de facettes; Donc, aucun de ces composants composites non plus.
  3. Je ne suis pas autorisé à utiliser des bibliothèques de balises tierces (riches, sur les glaces, etc.)

Ces limitations sont fixées dans la pierre.

Passons maintenant à ma question. Actuellement, nous avons un JSP subview qui gère la création d'une adresse. Il y a beaucoup de javascript qui va de pair avec cela, avec un haricot. Cette page n'est jamais utilisée directement. Au lieu de cela, il est inclus en utilisant un <jsp:include />.

Cependant, il y a plusieurs attributs que je veux pouvoir changer. Par exemple, le comté est-il requis, faisons-nous actuellement des lavages d'adresse, etc. Pour ce faire, il serait logique d'utiliser un composant personnalisé (je pense?). Cependant, je ne suis pas vraiment sûr de la meilleure façon de le faire.

Si je le pouvais, je transformerais simplement ce JSP en un composant composite et j'en aurais fini avec. Cependant, ce n'est pas vraiment une option basée sur mes limites.

Quelles sont mes options? Ce ne serait pas si difficile si ce n'était pas pour la quantité de JavaScript impliquée. Je sais que mon explication était vague; Cependant, je recherche plus les conseils qu'une réponse directe. J'ai googlé des choses telles que des composants JSF 1.x personnalisés avec JavaScript, etc. Je n'ai cependant pas trouvé beaucoup de bons articles.

Merci d'avance.

Était-ce utile?

La solution

Créez un fichier de balises JSP.

/WEB-INF/tags/foo.tag

<%@ tag body-content="empty" %>
<%@ attribute name="countryRequired" required="false" type="java.lang.Boolean" %>
<%@ attribute name="showAddress" required="false" type="java.lang.Boolean" %>

<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<h:panelGrid columns="2">
    <h:outputLabel for="country" value="Country" />
    <h:inputText id="country" value="#{bean.country}" required="${countryRequired}" />

    <c:if test="${showAddress}">
        <h:outputLabel for="address" value="Address" />
        <h:inputText id="address" value="#{bean.address}" />
    </c:if>
</h:panelGrid>

Déclarer et l'utiliser comme suit (aucune configuration XML supplémentaire nécessaire):

<%@ taglib prefix="my" tagdir="/WEB-INF/tags" %>
...
<my:foo showAddress="true" />

Notez que JSTL est également ici une balise de "temps de construction de vue" comme dans les facettes. Notez également que vous ne pouvez pas utiliser #{} Pour référencer les attributs de balise JSP.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top