Mah*_*leh 3 facelets taglib java-ee jsf-2
我想制作一个util方法,从地图转换为列表,以便与EL一起使用,这是我试过的:
1- utils.taglib.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE facelet-taglib PUBLIC
"-//Sun Microsystems, Inc.//DTD Facelet Taglib 1.0//EN"
"https://facelets.dev.java.net/source/browse/*checkout*/facelets/src/etc/facelet-taglib_1_0.dtd">
<facelet-taglib xmlns="http://java.sun.com/JSF/Facelet">
<namespace>http://mycomp.com/utils</namespace>
<function>
<function-name>mapToList</function-name>
<function-class>com.mycomp.MyClass</function-class>
<function-signature>java.util.List mapToList(java.util.Map)</function-signature>
</function>
</facelet-taglib>
Run Code Online (Sandbox Code Playgroud)
2- web.xml:我添加了它,因为我添加了spring安全标记lib,如下所示:
<context-param>
<param-name>javax.faces.FACELETS_LIBRARIES</param-name>
<param-value>
/WEB-INF/springsecurity.taglib.xml
/WEB-INF/utils.taglib.xml
</param-value>
</context-param>
Run Code Online (Sandbox Code Playgroud)
3- xhtml页面:
xmlns:utils="http://mycomp.com/utils"
<ui:repeat value="#{utils:mapToList(myBean.map)}" var="entry" >
Key = #{entry.key} Value = #{entry.value} <br/>
</ui:repeat>
Run Code Online (Sandbox Code Playgroud)
4- Util类:
public class MyClass{
public static <T, S> List<Map.Entry<T, S>> mapToList(Map<T, S> map) {
if (map == null) {
return null;
}
List<Map.Entry<T, S>> list = new ArrayList<Map.Entry<T, S>>();
list.addAll(map.entrySet());
return list;
}
}
Run Code Online (Sandbox Code Playgroud)
问题:
我收到两个错误:
1-当试图打开使用弹簧安全标签的页面时,标签不再被识别,我收到错误:
Warning: This page calls for XML namespace http://www.springframework.org/security/tags declared with prefix sec but no taglibrary exists for that namespace.
Run Code Online (Sandbox Code Playgroud)
2-当访问使用新自定义taglib的页面时,我收到错误:
Function 'utils:mapToList' not found
Run Code Online (Sandbox Code Playgroud)
请指教,谢谢.
在pount 2注释中,您必须通过将facelets.LIBRARIES作为以分号分隔的列表进行传递来定义要使用的多个标记库.
试试这个:
<context-param>
<param-name>javax.faces.FACELETS_LIBRARIES</param-name>
<param-value>/WEB-INF/springsecurity.taglib.xml;/WEB-INF/utils.taglib.xml</param-value>
</context-param>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5767 次 |
| 最近记录: |