java - 具有不同值类型的 JSP 标记属性

标签 java jsp jsp-tags

是否可以让 JSP 标记的属性具有不同的值类型?

<tag>
    <name>init</name>
    <tag-class>com.example.InitTag</tag-class>
    <body-content>empty</body-content>
    <attribute>
        <name>locale</name>
        <rtexprvalue>true</rtexprvalue>
    </attribute>
</tag>

public class InitTag extends SimpleTagSupport {
    private Locale locale;

    public InitTag() {
        setLocale(Locale.getDefault());
    }

    public void setLocale(String locale) {
        setLocale(SetLocaleSupport.parseLocale(locale));
    }

    public void setLocale(Locale locale) {
        this.locale = locale;
    }
}

现在我希望能够使用 Locale 对象以及 String 对象作为属性值:

<mytag:init locale="en" />
or
<mytag:init locale="${anyLocaleObject}" />

但是出现此异常:org.apache.jasper.JasperException:无法将属性“locale”的字符串“en”转换为类“java.util.Locale”:属性编辑器未向 PropertyEditorManager 注册

我必须使用提到的“属性编辑器”吗?那怎么使用呢?

最佳答案

您可以只使用对象类型的属性并动态检查它是否是字符串或区域设置或其他。

关于java - 具有不同值类型的 JSP 标记属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20573870/

相关文章:

java - 列可排序更改表格背景颜色

javascript - 如何打印span标签中变量的值?

java - 如何通过Fragment的Activity刷新Fragment的内容?

Java : fill circle partially and put percentage number inside it

jsp - 如何将 boolean 值表示为 "yes"或 "no"?

java - 关于 JSTL 的概念

java - MyFirstApp 教程 Android Studio -- sendMessage 问题

java - 类型不匹配 : cannot convert from String to Uri

java - JSESSIONID 是如何传递的?作为 header 参数还是作为 cookie 参数?

javax.servlet.jsp.JspTagException : 'begin' < 0