是否可以让 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/