使用ADF文本编辑器(RichTextEditor)组件

在WEB项目里面有时会需要文本编辑器,比如博客,论坛等,在ADF框架中自带了文本编辑器组件(RichTextEditor),下面简单介绍一下如何使用ADF自带的文本编辑器;

使用:

比如建立一个很简单的帖子的vo,把该vo拖到页面已form的形式显示,并且把帖子内容属性改为以文本编辑器显示:

<af:richTextEditor value="#{bindings.TopicContent.inputValue}" shortDesc="#{bindings.TopicContent.hints.tooltip}" id="it2" label="内容"> </af:richTextEditor>   

运行页面,在文本编辑器里面输入文本,以及添加样式,保存,结果不能保存到数据库中。

 

原因:

在oracle数据库中,保存大对象一般用BLOB或CLOB类型,而不用varchar,varchar最大好像只能保存4kb,所以上面的例子中的帖子的内容属性是CLOB类型,而不是varchar类型,而这个类型导致保存到数据库不成功。

 

解决:

增加转化器

1. 增加转化器类:

package view.bean.converter; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.convert.Converter; import javax.faces.convert.ConverterException; import oracle.jbo.domain.ClobDomain; public class ClobConverter implements Converter { public ClobConverter() { } public Object getAsObject(FacesContext context, UIComponent component, String value) { if (context == null || component == null) { throw new NullPointerException("FacesContext and UIComponent can not be null"); } if (value == null) { return null; } try { return new ClobDomain(value); } catch (Exception ex) { final String message = String.format("Unable to convert boolean value /"%s/" into a oracle.jbo.domain.Number", value); throw new ConverterException(message, ex); } } public String getAsString(FacesContext context, UIComponent component, Object value) { if (context == null || component == null) { throw new NullPointerException("FacesContext and UIComponent can not be null"); } return value.toString(); } }

 

2. 在faces-config.xml文件中配置该类:

 <converter> <converter-id>ClobConverter</converter-id> <converter-class>view.bean.converter.ClobConverter</converter-class> </converter>

 

3. 在页面中的文本编辑器组件的converter属性选择该类型转化器:

<af:richTextEditor value="#{bindings.TopicContent.inputValue}" shortDesc="#{bindings.TopicContent.hints.tooltip}" id="it2" label="内容" converter="ClobConverter"> </af:richTextEditor>

再次运行页面,在文本编辑器里面输入文本以及样式,保存,成功。

你可能感兴趣的:(数据库,exception,String,object,null,文本编辑)