r195 - in trunk/nuiton-struts2/src/main: java/org/nuiton/web/struts2/taglib resources/META-INF/tld
Author: tchemit Date: 2012-03-14 14:45:29 +0100 (Wed, 14 Mar 2012) New Revision: 195 Url: http://nuiton.org/repositories/revision/nuiton-web/195 Log: Evolution #2006: Extends struts fieldError to have dynamic fieldNames Added: trunk/nuiton-struts2/src/main/java/org/nuiton/web/struts2/taglib/FieldError2.java trunk/nuiton-struts2/src/main/java/org/nuiton/web/struts2/taglib/FieldError2Tag.java Modified: trunk/nuiton-struts2/src/main/resources/META-INF/tld/nuiton-tags.tld Added: trunk/nuiton-struts2/src/main/java/org/nuiton/web/struts2/taglib/FieldError2.java =================================================================== --- trunk/nuiton-struts2/src/main/java/org/nuiton/web/struts2/taglib/FieldError2.java (rev 0) +++ trunk/nuiton-struts2/src/main/java/org/nuiton/web/struts2/taglib/FieldError2.java 2012-03-14 13:45:29 UTC (rev 195) @@ -0,0 +1,124 @@ +/* + * $Id: FieldError.java 805635 2009-08-19 00:18:54Z musachy $ + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.nuiton.web.struts2.taglib; + +import com.opensymphony.xwork2.util.ValueStack; +import org.apache.struts2.components.FieldError; +import org.apache.struts2.views.annotations.StrutsTag; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.ArrayList; +import java.util.List; + +/** + * <!-- START SNIPPET: javadoc --> + * <p/> + * Render field errors if they exists. Specific layout depends on the particular theme. + * The field error strings will be html escaped by default. + * <p/> + * <!-- END SNIPPET: javadoc --> + * <p/> + * <p/> <b>Examples</b> + * <p/> + * <pre> + * <!-- START SNIPPET: example --> + * + * <!-- example 1 --> + * <sp:fielderror2 /> + * + * <!-- example 2 --> + * <sp:fielderror2> + * <s:param>field1</s:param> + * <s:param>field2</s:param> + * </sp:fielderror2> + * <s:form .... > + * .... + * </s:form> + * + * OR + * + * <sp:fielderror2> + * <s:param value="%{'field1'}" /> + * <s:param value="%{'field2'}" /> + * </sp:fielderror2> + * <s:form .... > + * .... + * </s:form> + * + * OR + * + * <sp:fielderror2 fieldName="field1" /> + * + * <!-- END SNIPPET: example --> + * </pre> + * <p/> + * <p/> + * <p/> <b>Description</b><p/> + * <p/> + * <p/> + * <pre> + * <!-- START SNIPPET: description --> + * + * Example 1: display all field errors<p/> + * Example 2: display field errors only for 'field1' and 'field2'<p/> + * + * <!-- END SNIPPET: description --> + * </pre> + */ +@StrutsTag(name = "fielderror2", tldTagClass = "org.chorem.pollen.ui.FieldError2Tag", description = "Render field error (all " + + "or partial depending on param tag nested)if they exists") +public class FieldError2 extends FieldError { + + + public FieldError2(ValueStack stack, + HttpServletRequest request, + HttpServletResponse response) { + super(stack, request, response); + } + + @Override + protected void evaluateExtraParams() { + + List<String> fieldErrorFieldNames = getFieldErrorFieldNames(); + + if (fieldErrorFieldNames != null) { + + List<String> valued = new ArrayList<String>(); + for (String errorFieldName : fieldErrorFieldNames) { + String fieldValue; + if (errorFieldName.contains("%")) { + fieldValue = findString(errorFieldName); + } else { + fieldValue = errorFieldName; + } + valued.add(fieldValue); + } + fieldErrorFieldNames.clear(); + fieldErrorFieldNames.addAll(valued); + } + + super.evaluateExtraParams(); + } + +} + Added: trunk/nuiton-struts2/src/main/java/org/nuiton/web/struts2/taglib/FieldError2Tag.java =================================================================== --- trunk/nuiton-struts2/src/main/java/org/nuiton/web/struts2/taglib/FieldError2Tag.java (rev 0) +++ trunk/nuiton-struts2/src/main/java/org/nuiton/web/struts2/taglib/FieldError2Tag.java 2012-03-14 13:45:29 UTC (rev 195) @@ -0,0 +1,42 @@ +/* + * $Id: FieldErrorTag.java 805635 2009-08-19 00:18:54Z musachy $ + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.nuiton.web.struts2.taglib; + +import com.opensymphony.xwork2.util.ValueStack; +import org.apache.struts2.components.Component; +import org.apache.struts2.views.jsp.ui.FieldErrorTag; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +/** FieldError Tag. */ +public class FieldError2Tag extends FieldErrorTag { + + private static final long serialVersionUID = -182532967507726323L; + + @Override + public Component getBean(ValueStack stack, HttpServletRequest req, HttpServletResponse res) { + return new FieldError2(stack, req, res); + } + +} + Modified: trunk/nuiton-struts2/src/main/resources/META-INF/tld/nuiton-tags.tld =================================================================== --- trunk/nuiton-struts2/src/main/resources/META-INF/tld/nuiton-tags.tld 2012-03-14 13:45:17 UTC (rev 194) +++ trunk/nuiton-struts2/src/main/resources/META-INF/tld/nuiton-tags.tld 2012-03-14 13:45:29 UTC (rev 195) @@ -28,4 +28,264 @@ </attribute> <dynamic-attributes>false</dynamic-attributes> </tag> + + <tag> + <description><![CDATA[Render field error (all or partial depending on param tag nested)if they exists]]></description> + <name>fielderror</name> + <tag-class>org.nuiton.web.struts2.taglib.FieldError2Tag</tag-class> + <body-content>JSP</body-content> + <attribute> + <description><![CDATA[Set the html accesskey attribute on rendered html element]]></description> + <name>accesskey</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <attribute> + <description><![CDATA[The css class to use for element]]></description> + <name>cssClass</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <attribute> + <description><![CDATA[The css error class to use for element]]></description> + <name>cssErrorClass</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <attribute> + <description><![CDATA[The css error style definitions for element to use]]></description> + <name>cssErrorStyle</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <attribute> + <description><![CDATA[The css style definitions for element to use]]></description> + <name>cssStyle</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <attribute> + <description><![CDATA[Set the html disabled attribute on rendered html element]]></description> + <name>disabled</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <attribute> + <description><![CDATA[ Whether to escape HTML]]></description> + <name>escape</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <attribute> + <description><![CDATA[Field name for single field attribute usage]]></description> + <name>fieldName</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <attribute> + <description><![CDATA[HTML id attribute]]></description> + <name>id</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <attribute> + <description><![CDATA[Use JavaScript to generate tooltips]]></description> + <name>javascriptTooltip</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <attribute> + <description><![CDATA[Set the key (name, value, label) for this particular component]]></description> + <name>key</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <attribute> + <description><![CDATA[Label expression used for rendering an element specific label]]></description> + <name>label</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <attribute> + <description><![CDATA[String that will be appended to the label]]></description> + <name>labelSeparator</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <attribute> + <description><![CDATA[Define label position of form element (top/left)]]></description> + <name>labelposition</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <attribute> + <description><![CDATA[The name to set for element]]></description> + <name>name</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <attribute> + <description><![CDATA[ Set the html onblur attribute on rendered html element]]></description> + <name>onblur</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <attribute> + <description><![CDATA[Set the html onchange attribute on rendered html element]]></description> + <name>onchange</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <attribute> + <description><![CDATA[Set the html onclick attribute on rendered html element]]></description> + <name>onclick</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <attribute> + <description><![CDATA[Set the html ondblclick attribute on rendered html element]]></description> + <name>ondblclick</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <attribute> + <description><![CDATA[Set the html onfocus attribute on rendered html element]]></description> + <name>onfocus</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <attribute> + <description><![CDATA[Set the html onkeydown attribute on rendered html element]]></description> + <name>onkeydown</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <attribute> + <description><![CDATA[Set the html onkeypress attribute on rendered html element]]></description> + <name>onkeypress</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <attribute> + <description><![CDATA[Set the html onkeyup attribute on rendered html element]]></description> + <name>onkeyup</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <attribute> + <description><![CDATA[Set the html onmousedown attribute on rendered html element]]></description> + <name>onmousedown</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <attribute> + <description><![CDATA[Set the html onmousemove attribute on rendered html element]]></description> + <name>onmousemove</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <attribute> + <description><![CDATA[Set the html onmouseout attribute on rendered html element]]></description> + <name>onmouseout</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <attribute> + <description><![CDATA[Set the html onmouseover attribute on rendered html element]]></description> + <name>onmouseover</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <attribute> + <description><![CDATA[Set the html onmouseup attribute on rendered html element]]></description> + <name>onmouseup</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <attribute> + <description><![CDATA[Set the html onselect attribute on rendered html element]]></description> + <name>onselect</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <attribute> + <description><![CDATA[If set to true, the rendered element will indicate that input is required]]></description> + <name>required</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <attribute> + <description><![CDATA[Define required position of required form element (left|right)]]></description> + <name>requiredposition</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <attribute> + <description><![CDATA[Set the html tabindex attribute on rendered html element]]></description> + <name>tabindex</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <attribute> + <description><![CDATA[The template (other than default) to use for rendering the element]]></description> + <name>template</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <attribute> + <description><![CDATA[The template directory.]]></description> + <name>templateDir</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <attribute> + <description><![CDATA[The theme (other than default) to use for rendering the element]]></description> + <name>theme</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <attribute> + <description><![CDATA[Set the html title attribute on rendered html element]]></description> + <name>title</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <attribute> + <description><![CDATA[Set the tooltip of this particular component]]></description> + <name>tooltip</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <attribute> + <description><![CDATA[Deprecated. Use individual tooltip configuration attributes instead.]]></description> + <name>tooltipConfig</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <attribute> + <description><![CDATA[CSS class applied to JavaScrip tooltips]]></description> + <name>tooltipCssClass</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <attribute> + <description><![CDATA[Delay in milliseconds, before showing JavaScript tooltips ]]></description> + <name>tooltipDelay</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <attribute> + <description><![CDATA[Icon path used for image that will have the tooltip]]></description> + <name>tooltipIconPath</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <attribute> + <description><![CDATA[Preset the value of input element.]]></description> + <name>value</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <dynamic-attributes>false</dynamic-attributes> + </tag> </taglib>
participants (1)
-
tchemit@users.nuiton.org