⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 countrytag.java

📁 this is for appfuse1.8 source using strut 1.x, spring and hibernate.
💻 JAVA
字号:
package org.appfuse.webapp.taglib;import java.io.IOException;import java.text.Collator;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.Iterator;import java.util.List;import java.util.Locale;import javax.servlet.jsp.JspException;import javax.servlet.jsp.tagext.TagSupport;import org.appfuse.model.LabelValue;import org.displaytag.tags.el.ExpressionEvaluator;/** * Tag for creating multiple &lt;select&gt; options for displaying a list of * country names. * * <p> * <b>NOTE</b> - This tag requires a Java2 (JDK 1.2 or later) platform. * </p> * * @author Jens Fischer, Matt Raible * @version $Revision: 1.3 $ $Date: 2005/04/12 15:51:33 $ * * @jsp.tag name="country" bodycontent="empty" */public class CountryTag extends TagSupport {	private static final long serialVersionUID = 3905528206810167095L;    private String name;    private String prompt;    private String scope;    private String selected;    /**     * @param name The name to set.     *     * @jsp.attribute required="false" rtexprvalue="true"     */    public void setName(String name) {        this.name = name;    }    /**     * @param prompt The prompt to set.     * @jsp.attribute required="false" rtexprvalue="true"     */    public void setPrompt(String prompt) {        this.prompt = prompt;    }    /**     * @param selected The selected option.     * @jsp.attribute required="false" rtexprvalue="true"     */    public void setDefault(String selected) {        this.selected = selected;    }    /**     * Property used to simply stuff the list of countries into a     * specified scope.     *     * @param scope     *     * @jsp.attribute required="false" rtexprvalue="true"     */    public void setToScope(String scope) {        this.scope = scope;    }    /**     * Process the start of this tag.     *     * @return     *     * @exception JspException if a JSP exception has occurred     *     * @see javax.servlet.jsp.tagext.Tag#doStartTag()     */    public int doStartTag() throws JspException {        ExpressionEvaluator eval = new ExpressionEvaluator(this, pageContext);        if (selected != null) {            selected = eval.evalString("default", selected);        }        Locale userLocale = pageContext.getRequest().getLocale();        List countries = this.buildCountryList(userLocale);        if (scope != null) {            if (scope.equals("page")) {                pageContext.setAttribute(name, countries);            } else if (scope.equals("request")) {                pageContext.getRequest().setAttribute(name, countries);            } else if (scope.equals("session")) {                pageContext.getSession().setAttribute(name, countries);            } else if (scope.equals("application")) {                pageContext.getServletContext().setAttribute(name, countries);            } else {                throw new JspException("Attribute 'scope' must be: page, request, session or application");            }        } else {            StringBuffer sb = new StringBuffer();            sb.append("<select name=\"" + name + "\" id=\"" + name + "\">\n");            if (prompt != null) {                sb.append("    <option value=\"\" selected=\"selected\">");                sb.append(eval.evalString("prompt", prompt) + "</option>\n");            }            for (Iterator i = countries.iterator(); i.hasNext();) {                LabelValue country = (LabelValue) i.next();                sb.append("    <option value=\"" + country.getValue() + "\"");                if ((selected != null) && selected.equals(country.getValue())) {                    sb.append(" selected=\"selected\"");                }                sb.append(">" + country.getLabel() + "</option>\n");            }            sb.append("</select>");            try {                pageContext.getOut().write(sb.toString());            } catch (IOException io) {                throw new JspException(io);            }        }        return super.doStartTag();    }    /**     * Release aquired resources to enable tag reusage.     *     * @see javax.servlet.jsp.tagext.Tag#release()     */    public void release() {        super.release();    }    /**     * Build a List of LabelValues for all the available countries. Uses     * the two letter uppercase ISO name of the country as the value and the     * localized country name as the label.     *     * @param locale The Locale used to localize the country names.     *     * @return List of LabelValues for all available countries.     */    protected List buildCountryList(Locale locale) {        final String EMPTY = "";        final Locale[] available = Locale.getAvailableLocales();        List countries = new ArrayList();        for (int i = 0; i < available.length; i++) {            final String iso = available[i].getCountry();            final String name = available[i].getDisplayCountry(locale);            if (!EMPTY.equals(iso) && !EMPTY.equals(name)) {                LabelValue country = new LabelValue(name, iso);                if (!countries.contains(country)) {                    countries.add(new LabelValue(name, iso));                }            }        }        Collections.sort(countries, new LabelValueComparator(locale));        return countries;    }    /**     * Class to compare LabelValues using their labels with     * locale-sensitive behaviour.     */    public class LabelValueComparator implements Comparator {        private Comparator c;        /**         * Creates a new LabelValueComparator object.         *         * @param locale The Locale used for localized String comparison.         */        public LabelValueComparator(Locale locale) {            c = Collator.getInstance(locale);        }        /**         * Compares the localized labels of two LabelValues.         *         * @param o1 The first LabelValue to compare.         * @param o2 The second LabelValue to compare.         *         * @return The value returned by comparing the localized labels.         */        public final int compare(Object o1, Object o2) {            LabelValue lhs = (LabelValue) o1;            LabelValue rhs = (LabelValue) o2;            return c.compare(lhs.getLabel(), rhs.getLabel());        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -