是的,你需要實現一個Converter
。對於這種特殊情況並不困難:
package mypackage;
import java.net.MalformedURLException;
import java.net.URL;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.ConverterException;
import javax.faces.convert.FacesConverter;
@FacesConverter(forClass=URL.class)
public class URLConverter implements Converter {
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
try {
return new URL(value);
} catch (MalformedURLException e) {
throw new ConverterException(new FacesMessage(String.format("Cannot convert %s to URL", value)), e);
}
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
return value.toString();
}
}
把它放在你的項目的某個地方。由於@FacesConverter
它會自動註冊。
非常感謝! :) – yegor256 2010-08-05 14:35:05
不客氣。請注意編輯;我被遺忘了'FacesMessage'。它是在'h:message(s)'中顯示的那個。 – BalusC 2010-08-05 14:39:36
您可能也想要處理空字符串和空字符串。 return(value == null || value.isEmpty())? null:新的URL(值); 和 返回值== null? 「」:value.toString();分別爲 – cyberoblivion 2014-01-31 16:51:22