Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[JSF] Validator voor meerder TextAreas

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hey,

Alweer een JSF vraagje. op mijn formulier heb ik een lijst van checkboxen en 2 textareas. Nu moet ik een validator schrijven om te controleren als 1 van de 3 ingevuld is.
vb:

SelectManyCheckbox = leeg
textarea1 = leeg
textarea2 = leeg

= ValidatorException

Ik heb wat rondgezocht en op het blog van BalusC vond ik hoe ik dit moest doen, maar deze validator treed enkel in werking als er data is ingevuld + ik kan de waarde niet uit mijn textarea opvragen.

Is er hier een workaround voor nodig, of mis ik iets?

  • BalusC
  • Registratie: Oktober 2000
  • Niet online

BalusC

Carpe diem

Een validator wordt niet uitgevoerd als de veld leeg is. Je moet gebruik maken van de 'required' attribute om te indiceren of een veld vereist is.

In jouw specifieke geval kun je gebruik maken van de requestParameterMap. Deze is impliciet beschikbaar als #{param}. Dit is een map waarin de request parameters staan met de naam als key en de waarde als value. Je hoeft slechts in de 'required' attribute van de ene veld te checken of de andere twee velden zijn ingevuld. Zo nee, laat de ene veld dan required zijn.

Zoiets dus:
Java Server Faces:
1
2
3
4
5
<h:form id="form">
    <h:selectManyCheckbox id="box" required="#{empty param['form:area1'] && empty param['form:area2']}" />
    <h:inputTextArea id="area1" required="#{empty param['form:box'] && empty param['form:area2']}" />
    <h:inputTextArea id="area2" required="#{empty param['form:box'] && empty param['form:area1']}" />
</h:form>

Verwijderd

Topicstarter
Je moet dus echt met de id's die gegenereerd worden door de html werken?
ik zal het eens testen, ik hou je op de hoogte!
bedankt

edit:
Ok ik snap wat je bedoelt en het lukt, maar er is nog een tricky stukje aan het verhaal. het aantal 'SelectManyCheckbox' elementen is variable.
Java Server Faces:
1
2
3
4
5
6
7
8
9
10
<h:dataTable value="#{MeldingsficheBackBean.basisOptiesBean.locatieBackLijst}" var="lb">
    <h:column>
        <h:outputText value="#{lb.locatie.naam}" />
    </h:column>
    <h:column>
        <h:selectManyCheckbox value="#{lb.selectedItems}" id="chkLocaties" required="#{empty param['basisoptiesForm:txtOpenbaarDomein'] && empty param['basisoptiesForm:txtOpenbaarDomein']}" layout="pageDirection">
            <f:selectItems value="#{lb.selectItems}"/>
        </h:selectManyCheckbox>
    </h:column>
</h:dataTable>

zo zie je dat er per waarde een aantal checkboxen worden gegenereerd. is het mogelijk om dat te schrijven via een required atribuut of kan ik er een functie aankoppelen ofzo?

[ Voor 97% gewijzigd door Verwijderd op 06-03-2008 10:56 ]


  • BalusC
  • Registratie: Oktober 2000
  • Niet online

BalusC

Carpe diem

Je had moeten vertellen dat je dit in een datatable hebt zitten. Ik ging uit van een form met 1 checkboxgroep en 2 textarea's. In dit geval moet je de validatie maar naar de backing bean schuiven.

Verwijderd

Topicstarter
een validator schrijven en koppelen aan het required attribute?