{"type":"rich","version":"1.0","provider_name":"phorkie","provider_url":"https:\/\/p.cweiske.de\/","title":"fluid form validation hell","author_name":"Christian Weiske","cache_age":86400,"width":900,"height":900,"html":"<!-- embedding all files of https:\/\/p.cweiske.de\/358 -->\n<link rel=\"stylesheet\" href=\"https:\/\/p.cweiske.de\/css\/embed.css\"\/>\n<div class=\"phork\" id=\"358\">\n    <div class=\"phork-file\">\n <div class=\"phork-content\">\n  <style type=\"text\/css\">\/**\n * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann\n * (http:\/\/qbnz.com\/highlighter\/ and http:\/\/geshi.org\/)\n *\/\n.xml .de1, .xml .de2 {font: normal normal 1em\/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;}\n.xml  {font-family:monospace;}\n.xml .imp {font-weight: bold; color: red;}\n.xml li, .xml .li1 {color: #DDD;}\n.xml .ln {width:1px;text-align:right;margin:0;padding:0 2px;vertical-align:top;}\n.xml .es0 {color: #000099; font-weight: bold;}\n.xml .br0 {color: #66cc66;}\n.xml .sy0 {color: #66cc66;}\n.xml .st0 {color: #ff0000;}\n.xml .sc-1 {color: #808080; font-style: italic;}\n.xml .sc0 {color: #00bbdd;}\n.xml .sc1 {color: #ddbb00;}\n.xml .sc2 {color: #339933;}\n.xml .sc3 {color: #009900;}\n.xml .re0 {color: #000066;}\n.xml .re1 {color: #000000; font-weight: bold;}\n.xml .re2 {color: #000000; font-weight: bold;}\n.xml span.xtra { display:block; }\n<\/style><div class=\"code\"><table class=\"xml\"><tbody><tr class=\"li1\"><td class=\"ln\"><pre class=\"de1\">1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24\n25\n26\n27\n28\n29\n30\n31\n32\n33\n34\n35\n36\n37\n38\n39\n40\n<\/pre><\/td><td class=\"de1\"><pre class=\"de1\"><span class=\"sc-1\">&lt;!-- get a form-wide error --&gt;<\/span>\n<span class=\"sc3\"><span class=\"re1\">&lt;f:form.validationResults<\/span> <span class=\"re0\">for<\/span>=<span class=\"st0\">&quot;contactReq&quot;<\/span><span class=\"re2\">&gt;<\/span><\/span>\n&#160; <span class=\"sc3\"><span class=\"re1\">&lt;f:if<\/span> <span class=\"re0\">condition<\/span>=<span class=\"st0\">&quot;{validationResults.flattenedErrors}&quot;<\/span><span class=\"re2\">&gt;<\/span><\/span>\n&#160; &#160; <span class=\"sc3\"><span class=\"re1\">&lt;f:for<\/span> <span class=\"re0\">each<\/span>=<span class=\"st0\">&quot;{validationResults.flattenedErrors}&quot;<\/span> <span class=\"re0\">as<\/span>=<span class=\"st0\">&quot;errors&quot;<\/span> <span class=\"re0\">key<\/span>=<span class=\"st0\">&quot;propertyPath&quot;<\/span><span class=\"re2\">&gt;<\/span><\/span>\n&#160; &#160; &#160; <span class=\"sc3\"><span class=\"re1\">&lt;f:if<\/span> <span class=\"re0\">condition<\/span>=<span class=\"st0\">&quot;{propertyPath}==''&quot;<\/span><span class=\"re2\">&gt;<\/span><\/span>\n&#160; &#160; &#160; &#160; <span class=\"sc3\"><span class=\"re1\">&lt;f:for<\/span> <span class=\"re0\">each<\/span>=<span class=\"st0\">&quot;{errors}&quot;<\/span> <span class=\"re0\">as<\/span>=<span class=\"st0\">&quot;error&quot;<\/span><span class=\"re2\">&gt;<\/span><\/span>\n&#160; &#160; &#160; &#160; &#160; <span class=\"sc3\"><span class=\"re1\">&lt;f:if<\/span> <span class=\"re0\">condition<\/span>=<span class=\"st0\">&quot;{error.code}==1464702066&quot;<\/span><span class=\"re2\">&gt;<\/span><\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; <span class=\"sc3\"><span class=\"re1\">&lt;v:variable.set<\/span> <span class=\"re0\">name<\/span>=<span class=\"st0\">&quot;errorStyleMailorphone&quot;<\/span> <span class=\"re0\">value<\/span>=<span class=\"st0\">&quot;display:block&quot;<\/span><span class=\"re2\">\/&gt;<\/span><\/span>\n&#160; &#160; &#160; &#160; &#160; <span class=\"sc3\"><span class=\"re1\">&lt;\/f:if<span class=\"re2\">&gt;<\/span><\/span><\/span>\n&#160; &#160; &#160; &#160; <span class=\"sc3\"><span class=\"re1\">&lt;\/f:for<span class=\"re2\">&gt;<\/span><\/span><\/span>\n&#160; &#160; &#160; <span class=\"sc3\"><span class=\"re1\">&lt;\/f:if<span class=\"re2\">&gt;<\/span><\/span><\/span>\n&#160; &#160; <span class=\"sc3\"><span class=\"re1\">&lt;\/f:for<span class=\"re2\">&gt;<\/span><\/span><\/span>\n&#160; <span class=\"sc3\"><span class=\"re1\">&lt;\/f:if<span class=\"re2\">&gt;<\/span><\/span><\/span>\n<span class=\"sc3\"><span class=\"re1\">&lt;\/f:form.validationResults<span class=\"re2\">&gt;<\/span><\/span><\/span>\n&#160;\n<span class=\"sc-1\">&lt;!-- errors for single fields --&gt;<\/span>\n<span class=\"sc3\"><span class=\"re1\">&lt;f:form.validationResults<\/span> <span class=\"re0\">for<\/span>=<span class=\"st0\">&quot;contactReq.name&quot;<\/span> <span class=\"re0\">as<\/span>=<span class=\"st0\">&quot;errors&quot;<\/span><span class=\"re2\">&gt;<\/span><\/span>\n&#160; <span class=\"sc3\"><span class=\"re1\">&lt;f:if<\/span> <span class=\"re0\">condition<\/span>=<span class=\"st0\">&quot;{errors.flattenedErrors}&quot;<\/span><span class=\"re2\">&gt;<\/span><\/span>\n&#160; &#160; <span class=\"sc3\"><span class=\"re1\">&lt;v:variable.set<\/span> <span class=\"re0\">name<\/span>=<span class=\"st0\">&quot;errorClassName&quot;<\/span> <span class=\"re0\">value<\/span>=<span class=\"st0\">&quot;error&quot;<\/span><span class=\"re2\">\/&gt;<\/span><\/span>\n&#160; <span class=\"sc3\"><span class=\"re1\">&lt;\/f:if<span class=\"re2\">&gt;<\/span><\/span><\/span>\n<span class=\"sc3\"><span class=\"re1\">&lt;\/f:form.validationResults<span class=\"re2\">&gt;<\/span><\/span><\/span>\n&#160;\n<span class=\"sc3\"><span class=\"re1\">&lt;f:form.validationResults<\/span> <span class=\"re0\">for<\/span>=<span class=\"st0\">&quot;contactReq.email&quot;<\/span> <span class=\"re0\">as<\/span>=<span class=\"st0\">&quot;errors&quot;<\/span><span class=\"re2\">&gt;<\/span><\/span>\n&#160; <span class=\"sc3\"><span class=\"re1\">&lt;f:if<\/span> <span class=\"re0\">condition<\/span>=<span class=\"st0\">&quot;{errors.flattenedErrors}&quot;<\/span><span class=\"re2\">&gt;<\/span><\/span>\n&#160; &#160; <span class=\"sc3\"><span class=\"re1\">&lt;v:variable.set<\/span> <span class=\"re0\">name<\/span>=<span class=\"st0\">&quot;errorClassEmail&quot;<\/span> <span class=\"re0\">value<\/span>=<span class=\"st0\">&quot;error&quot;<\/span><span class=\"re2\">\/&gt;<\/span><\/span>\n&#160; <span class=\"sc3\"><span class=\"re1\">&lt;\/f:if<span class=\"re2\">&gt;<\/span><\/span><\/span>\n<span class=\"sc3\"><span class=\"re1\">&lt;\/f:form.validationResults<span class=\"re2\">&gt;<\/span><\/span><\/span>\n&#160;\n<span class=\"sc3\"><span class=\"re1\">&lt;f:form.validationResults<\/span> <span class=\"re0\">for<\/span>=<span class=\"st0\">&quot;contactReq.phone&quot;<\/span> <span class=\"re0\">as<\/span>=<span class=\"st0\">&quot;errors&quot;<\/span><span class=\"re2\">&gt;<\/span><\/span>\n&#160; <span class=\"sc3\"><span class=\"re1\">&lt;f:if<\/span> <span class=\"re0\">condition<\/span>=<span class=\"st0\">&quot;{errors.flattenedErrors}&quot;<\/span><span class=\"re2\">&gt;<\/span><\/span>\n&#160; &#160; <span class=\"sc3\"><span class=\"re1\">&lt;v:variable.set<\/span> <span class=\"re0\">name<\/span>=<span class=\"st0\">&quot;errorClassPhone&quot;<\/span> <span class=\"re0\">value<\/span>=<span class=\"st0\">&quot;error&quot;<\/span><span class=\"re2\">\/&gt;<\/span><\/span>\n&#160; <span class=\"sc3\"><span class=\"re1\">&lt;\/f:if<span class=\"re2\">&gt;<\/span><\/span><\/span>\n<span class=\"sc3\"><span class=\"re1\">&lt;\/f:form.validationResults<span class=\"re2\">&gt;<\/span><\/span><\/span>\n&#160;\n<span class=\"sc3\"><span class=\"re1\">&lt;f:form.validationResults<\/span> <span class=\"re0\">for<\/span>=<span class=\"st0\">&quot;contactReq.message&quot;<\/span> <span class=\"re0\">as<\/span>=<span class=\"st0\">&quot;errors&quot;<\/span><span class=\"re2\">&gt;<\/span><\/span>\n&#160; <span class=\"sc3\"><span class=\"re1\">&lt;f:if<\/span> <span class=\"re0\">condition<\/span>=<span class=\"st0\">&quot;{errors.flattenedErrors}&quot;<\/span><span class=\"re2\">&gt;<\/span><\/span>\n&#160; &#160; <span class=\"sc3\"><span class=\"re1\">&lt;v:variable.set<\/span> <span class=\"re0\">name<\/span>=<span class=\"st0\">&quot;errorClassMessage&quot;<\/span> <span class=\"re0\">value<\/span>=<span class=\"st0\">&quot;error&quot;<\/span><span class=\"re2\">\/&gt;<\/span><\/span>\n&#160; <span class=\"sc3\"><span class=\"re1\">&lt;\/f:if<span class=\"re2\">&gt;<\/span><\/span><\/span>\n<span class=\"sc3\"><span class=\"re1\">&lt;\/f:form.validationResults<span class=\"re2\">&gt;<\/span><\/span><\/span>\n&#160;<\/pre><\/td><\/tr><\/tbody><\/table><\/div>\n <\/div>\n <div class=\"phork-meta\">\n  <a href=\"https:\/\/p.cweiske.de\/358\/rev-raw\/b2ec52c5e2e9621854519040edecbf5336d27908\/phork0.xml\" style=\"float: right\">view raw source<\/a>\n  <a href=\"https:\/\/p.cweiske.de\/358#phork0.xml\">phork0.xml<\/a>\n <\/div>\n<\/div>\n<\/div>\n"}
