2011-02-27 54 views
1

從我的XHTML文件:JSF轉換警告

<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」作爲註解名和converterID在我的XHTML文件,它的工作原理。但我仍然會收到警告...

回答

1

您不需要<f:converter>,因爲您的轉換器已被forClass=String.class明確聲明爲在每個String輸入類型上運行。

如果您實際意圖是明確聲明它在看待自己特定的輸入字段,那麼你應該改爲使用

@FacesConverter(value="NL2BRConverter") 

然後你可以使用

<f:converter converterId="NL2BRConverter" /> 
+0

優秀的,以確保我明白...使用註釋@FacesConverter(forClass = String.class)將導致此轉換器來運行我是否指定在我看來,一個轉換器或不? – JHarnach 2011-03-01 16:25:02

+1

它不是專門的註釋,但'forClass'參數,導致其運行* *每一個屬性,它是'String'類型。這對於像'Person'等非標準類型特別有用。這只是一個有點古怪的'String' :) – BalusC 2011-03-01 16:32:37

+0

我一直在玩弄使用轉換器我所有的字符串輸入/輸出。我可以毫無問題地轉換輸入,但轉換器會忽略輸出。使用相同的轉換器,但按名稱指定它並沒有問題。想法?這應該成爲一個新問題嗎? – JHarnach 2011-03-10 23:59:43

0

雖然這種情況下,你不需要在xhtml中指定一個轉換器,事實上,你這樣做不應該導致在Eclipse中顯示警告。這實際上是Eclipse中的一個錯誤。有關更多信息,請參閱https://bugs.eclipse.org/bugs/show_bug.cgi?id=357885。我不知道在Eclipse中隱藏這個特定警告的方法。

0

在我的版本,@FacesConverter(value="NL2BRConverter")給我一個警告,然後改變了這一爲@FacesConverter("NL2BRConverter")和解決。我希望能有幫助:d