JSF转换器警告

时间:2011-02-27 20:52:29

标签: java jsf jsf-2 converter

来自我的xhtml文件:

<h:inputTextarea value="#{newPostForm.post.body}">
     <f:converter converterId="NL2BRConverter" />
</h:inputTextarea>

来自我的java文件:

@FacesConverter(forClass=String.class)
public class NL2BRConverter implements Converter {

@Override
public Object getAsObject(FacesContext ctx, UIComponent comp, String str) {
    return str.replaceAll("\r\n+", "<br />");
    //return str.replaceAll("\r\n+", "&#13");
}

@Override
public String getAsString(FacesContext ctx, UIComponent comp, Object obj) {
    return obj.toString();
}

}

Eclipse在我的xhtml文件中警告我'NL2BRConverter'converterID未注册。

我尝试用

替换转换器注释
@FacesConverter("NL2BRConverter")

但错误仍然存​​在。这不足以在JSF2.0中注册转换器吗?

目前,如果我使用完整的类名“com.tracker.converter.NL2BRConverter”作为带注释的名称和我的XHTML文件中的converterID,它就可以工作。然而我仍然得到那个警告......

2 个答案:

答案 0 :(得分:1)

您不需要<f:converter>,因为forClass=String.class已明确声明您的转换器在每个String输入类型上运行。

如果您的实际意图是自己为视图中的特定输入字段明确声明它,那么您应该使用

@FacesConverter(value="NL2BRConverter")

然后你可以使用

<f:converter converterId="NL2BRConverter" />

答案 1 :(得分:0)

虽然在这种情况下你不需要在xhtml中指定转换器,但是这样做的事实不应该导致在Eclipse中显示警告。这实际上是Eclipse中的一个错误。有关详细信息,请参阅https://bugs.eclipse.org/bugs/show_bug.cgi?id=357885。我不知道在Eclipse中隐藏这个特定警告的方法。