【问题标题】:How to create a custom taglib如何创建自定义标签库
【发布时间】:2012-01-24 09:58:21
【问题描述】:

我想制作一个实用方法来从地图转换为列表以与 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>

2- web.xml :我在添加spring安全标签库时添加了它,如下:

<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>

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>

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;
  }

 }

问题

我收到两个错误:

1- 尝试打开使用 spring 安全标签的页面时,标签不再被识别,我收到错误:

Warning: This page calls for XML namespace http://www.springframework.org/security/tags declared with prefix sec but no taglibrary exists for that namespace.

2- 访问使用新自定义 taglib 的页面时,出现错误:

Function 'utils:mapToList' not found 

请指教,谢谢。

【问题讨论】:

    标签: jakarta-ee jsf-2 facelets taglib


    【解决方案1】:

    在第 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>
    

    【讨论】:

      猜你喜欢
      • 2011-02-10
      • 2013-01-22
      • 2012-02-29
      • 1970-01-01
      • 1970-01-01
      • 2011-12-31
      • 2016-11-26
      • 2011-07-08
      • 1970-01-01
      相关资源
      最近更新 更多