Detall dels tags - select

Defineix un element per seleccionar entre una llista de valors, generada a partir d'una consulta la la base de dades.

Estén el tag layout:select ( http://struts.application-servers.com/doc/tags/select.html#select ) de Struts-Layout.

La documentació auto-generada del tag és a http://canigo.ctti.gencat.net/confluence/canigodocs/site/canigo2_2/tlddoc/fwk/select.html




Atributs heredats

Els atributs heredats de layout:select son: accesskey, arg0, arg1, arg2, arg3, arg4, bundle, filter, hint, isRequired, key, layout, layoutId, maxlength, mode, multiple, name, onblur, onchange, onclick, ondblclick, onfocus, onkeydown, onkeypress, onkeyup, onmousedown, onmousemove, onmouseout, onmouseover, onmouseup, policy, property, size, styleClass, tabindex, tooltip, value.

Atributs específics de Canigó

Atribut Funció
optionsListName Nom de la llista de valors
otherKey Per als seleccionables depedents, si es vol un otherKey directe, que no resolgui el literal, s'indicarà un * davant del text a mostrar.
otherValue  
selectFieldSource  
selectFieldSourceProperties  
services  
styleId Identificador del tag, per lligar-lo amb la configuració injectada amb Spring
tooltipKey Clau del literal del missatge a mostrar dins el tooltip
tooltipOptions Opcions aplicades segons la implementació (en el cas actual sota DOM Tooltip)
tooltipTitleKey Clau del literal a mostrar si volem mostrar un títol com a capçalera del tooltip
forceOnChange Element que permet no forçar el mètode onChange quan hi ha selects enllaçats. Per defecte es true.

Per utilitzar els Tooltips cal incloure un conjunt d'arxius JavaScript i CSS:

  • el full d'estil tooltips.css
  • els arxius de scripts domLib.js i domTT.js

<LINK REL=StyleSheet
      HREF="css/tooltips/tooltips.css"
      TYPE="text/css"
      MEDIA=screen>

<script type="text/javascript"
        src="<c:url value="/scripts/tooltips/dom_tooltip/domLib.js"/>">
</script>
<script type="text/javascript"
        src="<c:url value="/scripts/tooltips/dom_tooltip/domTT.js"/>">
</script>

Configuració de l'accés a la Base de Dades

Per tal d'omplir el Select amb un conjunt de valors recuperats de la Base de Dades, cal realitzar una sèrie de configuracions.

En primer lloc, es defineix la consulta a realitzar, en HQL. Normalment aquestes consultes s'afegeixen a l'arxiu canigo-services-web-options-lists.xml com una entrada dins del bean defaultOptionValueListHandler.

Aquesta definició es referència des de la configuració de l'Action Servlet definint, en primer lloc, un bean amb tres propietats

  • el nom de la llista (optionListName)
  • l'atribut visible (optionLabelName, que es fà servir per omplir el Select)
  • l'atribut que es fà servir com a valor seleccionat (optionLabelProperty)

Un segon bean optionsListService conté la llista de tots els optionsListSources que s'utilitzin en la pàgina.

Exemple

A continuació es presenta un fragment de pàgina que utilitza el tag fwk:select

Pàgina JSP

<%@ include file="/WEB-INF/jsp/includes/fwkTagLibs.jsp" %>

<script type="text/javascript"
        src="<c:url value="/scripts/tooltips/dom_tooltip/domLib.js"/>">
</script>
<script type="text/javascript"
        src="<c:url value="/scripts/tooltips/dom_tooltip/domTT.js"/>">
</script>

<link rel="Stylesheet"
      href="css/tooltips/tooltips.css"
      type="text/css"
      media="screen">

<fwk:form action="provesTagsSimple.do"
          styleId="myActionForm"
          key="jsp.provesTags.ProvesTagsSimple.form"
          reqCode="show"
          method="post"
          layout="true">
    (...)
    <fwk:select styleId="camp8"
                key="jsp.provesTags.ProvesTagsSimple.camp8"
                mode="E,E,E"
    		layout="true"
                tooltipTitleKey="jsp.provesTags.ProvesTagsSimple.camp8.tipTitle"
                tooltipKey="jsp.provesTags.ProvesTagsSimple.camp8.tip"
                property="camp8" />
    (...)
</fwk:form>

Arxius d'internacionalització

jsp.provesTags.ProvesTagsSimple.camp8=Un altre camp
jsp.provesTags.ProvesTagsSimple.camp8.tipTitle=Ajuda
jsp.provesTags.ProvesTagsSimple.camp8.tip=Ajuda del camp que és un Select

Configuració Spring

En canigo-services-web-options-lists.xml

<bean name="defaultOptionValueListHandler"
      class="net.mlw.vlh.DefaultValueListHandlerImpl">
    <property name="config.adapters">
        <map>
            <entry key="categoriesList">
                <bean parent="defaultOptionBaseHibernateAdapter">
                    <property name="hql">
                        <value>
                            FROM
                            net.gencat.ctti.canigo.samples.prototip.model.Category
                            AS vo WHERE 1=1
                            /~descn: AND vo.descn LIKE {descn} ~/
                            /~sortColumn: ORDER BY vo.[sortColumn] [sortDirection]~/
                        </value>
                    </property>
                </bean>
            </entry>

En la configuració de l'ActionServlet associat a la pantalla:

<beans>
    <bean id="categoriesOptionListSource"
          parent="defaultOptionListSource">
        <property name="optionListName"
                  value="categoriesList"/>
        <property name="optionLabelName"
                  value="name"/>
        <property name="optionLabelProperty"
                  value="id"/>
    </bean>

    <bean id="optionsListService"
          class="net.gencat.ctti.canigo.services.web.taglib.util.options.OptionsListServiceBase">
        <property name="optionsListSources">
            <map>
                <entry key="categoriesList">
                    <ref bean="categoriesOptionListSource"/>
                </entry>
            </map>
        </property>
    </bean>

    <bean id="selectFieldTag"
          class="net.gencat.ctti.canigo.services.web.struts.taglib.forms.fields.SelectFieldTag">
        <property name="optionsListService"
                  ref="optionsListService"/>
    </bean>

    <bean name="/provesTagsSimple"
          class="net.gencat.ctti.canigo.provesTags.struts.action.ProvesTagsSimpleAction">

        <property name="tagsConfiguration">
            <map>
                <entry key="*">
                    <list>

                        <bean parent="selectFieldTag">
                            <property name="styleId" value="camp8"/>
                            <property name="optionsListName" value="categoriesList"/>
                        </bean>

                    </list>
                </entry>
            </map>
        </property>
    </bean>
</beans>

forceOnChange

El tag de select per defecte llança l'event onChange cada cop que hi ha qualsevol canvi a un select enllaçat. Si el que volem és canviar aquesta funcionalitat per defecte dels selects enllaçats es pot fer amb l'element forceOnSubmit que s'ha afegit propi al tag. Exemple: forceOnChange="false".
Aquest element per defecte té valor de true i només actua quan explícitament el canviem a false de la següent forma (forceOnChange="false"). Aquesta funcionalitat estarà inclosa en la propera versió del Framework 2.3.12 que es publicarà a finals de Gener.

Bugs

  • L'utilització dels atributs tooltipKey i tooltipTitleKey no inclouen automàticament els arxius javascript necessàris i cal fer-ho explícitament.

fwk_text.jpg (image/jpeg)
fwk_submit.jpg (image/jpeg)
fwk_select.jpg (image/jpeg)