来自我的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+", "
");
}
@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,它就可以工作。然而我仍然得到那个警告......
答案 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中隐藏这个特定警告的方法。