Formulářové controly jsou umístěny ve vlastním namespace. Jejich tagy mají prefix f:
, na rozdíl od je:
základních controlů systému JellyPot. Celý formulář se umísťuje do serverového tagu <form>
. Ten se může ve stránce vyskytovat jen jedenkrát (vlastnost ASP.NET).
JellyPot podporuje dva typy formulářů – <f:CollectionForm>
, který slouží k uložení dat z formuláře do kolekce přístupné přes administrační rozhraní, a <f:EmailForm>
, který navíc umí data poslat i na zvolený email.
Validace
Data z odeslaného formuláře lze na straně serveru validovat. V případě chybně vyplněného formuláře se zobrazí patřičná chybová hláška pomocí controlu <f:ErrMsgs>
. Pravidla pro validaci se definují u controlů <f:input>
, <f:textarea>
a <f:select>
pomocí atributu validateAs
. Možné hodnoty tohoto atributu jsou:
- None – výchozí chování, stejně jako pokud není atribut
validateAs
vůbec uveden. Neprovádí se žádné ověření dat. - NotEmpty – pole nesmí být prázdné, musí obsahovat alespoň jeden znak. Za takové znaky nejsou považovány tzv. bílé znaky (mezery, tabulátory atp). Tj. pole vyplněné pouze mezerami je v tomto případě nevalidní.
- Int, IntOrEmpty – pole musí obsahovat celé číslo (kladné, záporné) nebo nulu (případně zůstat prázdné).
- Decimal, DecimalOrEmpty – pole musí obsahovat celé nebo desetinné číslo (případně zůstat prázdné). Jako desetinná čárka může být použitá čárka i tečka, mezery vložené mezi číslice nejsou rozhodující.
- Date, DateOrEmpty – pole musí obsahovat platné datum (případně zůstat prázdné). Možné formáty zadání jsou
d.m
,d/m
,d.m.yyyy
,d/m/yyyy
- Email, EmailOrEmpty – pole musí obsahovat řetězec, který je možné interpretovat jako mailovou adresu (případně zůstat prázdné).
- RegExp – hodnota pole je ověřena proti regulárnímu výrazu, který je potřeba zapsat do atributu
validateData
. Regulární výraz je potřeba zapsat v syntaxi platné pro Microsoft .NET Framework.
Při odeslání formuláře na server JellyPot ověří obsah všech polí, které mají uvedený atribut validateAs
. Pokud některé validací neprojde, formulář se dále nezpracovává. V odpovědi serveru se odešle stránka, kde jsou pole s chybou označena třídou notValid
a control <f:errMsgs> vypíše chybové hlášky z příslušných atributů errTextValue
, resp. z uzlu textového souboru určeného atributem errText
.
.NET prostředí obsahuje zabezpečení proti odeslání HTML obsahu. Toto chování je možné vypnout pro jednotlivé formulářové pole atributem allowHtml="true"
nebo na celé stránce pomocí direktivy:
<%@ Page ValidateRequest="false" %>
Příklad
<form method="post" runat="server"> <f:CollectionForm runat="server" id="contact" targetCollection="message"> <formTemplate> <label>Vaše jméno* <f:input runat="server" id="name" targetField="name" validateAs="NotEmpty" errTextValue="Jméno musíte zadat" /> </label> <label>Email* <f:input runat="server" id="email" targetField="email" validateAs="Email" errTextValue="Není platný email" /> </label> <label>Zpráva* <f:textarea runat="server" id="message" targetField="message" validateAs="NotEmpty" errTextValue="Zprávu musíte zadat" /> </label> <f:errMsgs runat="server" tag="p" separator="<br />" /> <f:sendButton runat="server" textValue="Odeslat" /> </formTemplate> <sentTemplate> <p>Zpráva byla odeslána. Díky!</p> </sentTemplate> </f:CollectionForm> </form>