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>