【发布时间】:2015-10-03 01:57:05
【问题描述】:
我在网上找到了一个转换器,并尽我所能将其更改为我的需要。问题是我需要添加一个必须检查的标志(即字符串),并且转换器必须将某种模式应用于字符串。
自定义转换器:
@FacesConverter("convtest.UrlConverter")
public class UrlConverter implements Converter {
@Override
public Object getAsObject(FacesContext facesContext, UIComponent component, String value) {
StringBuilder url = new StringBuilder();
if(value!=null){
if(value.length()==13){
String tempstring;
tempstring=value.toString();
String finalstring= tempstring.substring(0, 4) + "-" + tempstring.substring(4, 8) + "-" + tempstring.substring(8, 13);
url.append(finalstring);
}else{
url.append(value);
}
}else
url.append("");
try {
new URI(url.toString());
} catch (URISyntaxException e) {
return null;
}
UrlData urlData = new UrlData(url.toString());
return urlData;
}
@Override
public String getAsString(FacesContext facesContext,
UIComponent component, Object value) {
try {
return value.toString();
} catch (Exception e) {
return null;
}
}
}
XHTML:
<h:inputText value="#{userData.data}">
<f:converter converterId="convtest.UrlConverter" />
</h:inputText>
现在的问题是,例如我有 2 种转换类型:
hjuzurt
假设hju 的输出格式为XXXX-XXXX-XXXXX
而zurt 的输出格式为XX-XX-XX-XX-XX-XX-X。
现在我想调用转换器,例如:
<f:converter converterId="convtest.UrlConverter" type="hju" />
或者类似的东西,让它使用正确的模式。
关于如何做到这一点的任何想法?
【问题讨论】:
标签: jsf attributes converter