webForumDet fria alternativet

Knas med mask i Struts

Java

5 svar · 619 visningar · startad av spango

Medlem sedan juni 20008 205 inlägg
Frågan#1

Försöker validera postnummer i Struts med hjälp av mask-validatorn men får inte skräpet att funka. Så här ser det ut i min validation.xml:

			<field property="zipCode" depends="required,mask">
				<arg0 key="formBean.zipCode" />
				<msg name="mask" key="formBean.zipCode.mask" />
				<var>
					<var-name>mask</var-name>
					<var-name>^[0-9]{3}[\s\-]?[0-9]{2}$</var-name>
				</var>
			</field>

Då ska man alltså kunna skriva in postnummer på formen "12345", "123 45" och "123-45". Men vad man än gör så säger bara validatorn nej. Jag har testat regexpen i validatorn på http://jakarta.apache.org/regexp/applet.html och där funkar den fint. Jag har testat att använda avesvärt mycket mer basala regexpar i validation.xml, men vad det jag än gör så klagar Struts alltid på att mitt inmatade postnummer inte stämmer överens med masken (om man inte lämnar tomt i vilket fall den klagar på det pga required). Finns det nåt knep man måste ta till för att få eländet att funka?

Medlem sedan sep. 2001961 inlägg
#2

Escapade tecken...

Testa ^[0-9]{3}[\\s\\-]?[0-9]{2}$

Medlem sedan juni 20008 205 inlägg
#3

Nope, funkar inte... inte ens enkla varianter som ^[0-9]*$ funkar. :l

Medlem sedan sep. 2001961 inlägg
#4

Strange... jag får alla att funka, utom den första.

Har du testat detta:

<h:inputText id="zipCode"
value="#{zipCode}">
<s:commonsValidator
mask="^[0-9]*$"
server="true"
client="false"/>
</h:inputText>

Jag vet att det inte är snyggt men det kan vara bra att testa det direkt i ett fält först och sedan göra det till en generell regel som gäller för sitens alla zipCode-fält.

Medlem sedan juni 20008 205 inlägg
#5

Kräver inte det där Shale? Vi kör gammel-Struts (Action Framework).

Medlem sedan sep. 2001961 inlägg
#6

Aha. Jo, det är Shale.

Måste kolla, långt bak i mitt minne finns ett litet minne om att vi hade problem med gamla valideringen i Struts. Finns förmodligen någon notering om det i vår interna FAQ men jag kommer inte åt den förns jag är inne på kontoret på torsdag. Kan kolla då om du inte hittat en lösning.

260 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)