我有一个复合的JSF组件 TimePicker.xhtml
,其中包含一个支持组件timePickerComponent
,用法如下:
<mi:timePicker style="display: initial;"
widgetVar="toTimepickerWidget"
converter="#{timePickerConverter}"
value="#{calendarBean.event.to}"
/>
而 timePickerConverter
是按照通常的方法创建的:
public class TimePickerConverter implements Converter, Serializable {
@Override
public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2)
throws ConverterException {
// TODO Auto-generated method stub
return null;
}
@Override
public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2)
throws ConverterException {
// TODO Auto-generated method stub
return null;
}
}
我该如何在复合组件中使用这个转换器?
更新:
以下是复合组件的代码:
<cc:implementation componentType="timePickerComponent">
<h:outputScript name="js/timepicker/timepicker_helper.js" target="head"/>
<div id="#{cc.clientId}" style="#{cc.attrs.style}">
<p:inputText id="timepicker"
scrollHeight="200"
value="#{cc.timeLocal}"
size="5"/>
</div>
</cc:implementation>
基本上我想要做的是将
inputText
中的纯文本转换为Date
对象,对我来说日期部分无关紧要,我只需要对象的时间部分。顺便说一句,作为临时解决方案,我将使用getConvertedValue
,如BalusC在Composite component with multiple input fields中所述。但是我想知道如何将此功能委托给外部转换器,就像文章中所述:
通常情况下,不应重写此方法,而应将所有内容委托给默认的JSF转换器机制。
TimePicker.xhtml
吗?你实际的问题在哪里? - Smutje<p:inputText id="timepicker" ... converter="#{cc.attrs.converter}"/>
一样向inputText
提供转换器。 - Smutje<p:inputText>
?在这种情况下,只有委派转换器才能是一种解决方案。 - Anatoly