请教JSF2.0中自定义Converter的配置

suibianshu 2010-01-24 06:06:18
工程用的是sun的JSF2.0包,自定义了一个Converter,
在*.jsp文件中用<%@ taglib uri="http://java.sun.com/jsf/composite/tld" prefix="conv" %>这种方式引入tld,页面处理没有问题。

但是在*.xhtml文件中用xmlns:conv="http://java.sun.com/jsf/composite/tld"引入tld,页面不会报错,但是控件没有调用convertor的代码。

在浏览器里看*.xhtml文件的源代码:
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:conv="http://java.sun.com/jsf/composite/tld">


感觉红色部分没有解析,正常应该是这样:<html xmlns="http://www.w3.org/1999/xhtml">

tld放在web-inf/lib目录下,faces-config.xml里面配了一个<converter/>


有做过类似的兄弟帮忙说说怎么配的?



自己搞定了。
1、要在faces-config.xml中定义一个<converter/>:这里在JSF1.2中也是这么写的,这里一定要定义,要不报错。
<converter>
<converter-id>myconv</converter-id>
//<converter-class/>:转换器的类名
<converter-class>component.convertor.MyConv</converter-class>
</converter>

2、定义一个converter.taglib.xml,facelets的写法,头尾抄jsf2.0的jar包的写法,类似JSF1.2中的TAG定义
<facelet-taglib...>
<tag>
<tag-name>myconv</tag-name>
<converter>
<converter-id>myconv</converter-id>
//<handler-class/>:handler的类名
<handler-class>component.convertor.MyConvHandler</handler-class>

</converter>

<attribute>
<name>digit</name>
<type>java.lang.String</type>
</attribute>
</tag>
</facelet-taglib>


3、MyConvHandler.java,功能类似JSF1.2里的TAG类,
public class MyConvHandler extends ConverterHandler
{
...
}

4、MyConv.java ,转换器的源代码,和JSF1.2中一样写
public class MyConv implements Converter, PartialStateHolder
{
public static final String CONVERTER_ID = "myconv";
...
}

5、faces-config.xml和converter.taglib.xml和MyConv.java 中的converter_id必须一致

下载JSF2.0的源代码,看看具体的写法。
...全文
262 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
suibianshu 2010-01-25
  • 打赏
  • 举报
回复
没有做过类似的吗?
suibianshu 2010-01-24
  • 打赏
  • 举报
回复
在facelets里自定义converter的配置估计也能用,
调用标签不是用<f:converter/>
而是用自己定义的<conv:conver />这种
suibianshu 2010-01-24
  • 打赏
  • 举报
回复
还有个现象,如果把<f:view>这些标签故意写错,比如写成<f:viw>,页面执行的时候绝对报错,但是把我自定义的这个标签写错,页面执行的时候不报错。

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧