我有两个按钮,其中一个需要使用<f:convertDateTime>
,而另一个需要在按钮点击时禁用<f:convertDateTime>
。
我尝试了rendered
和disabled
属性,但它们没有起作用,这是我的错误,因为根据API文档,它们不可用。
此外,是否有一种方法可以覆盖javax.faces.converter.DateTimeConverter
类,以便每当触发f:convertDateTime
时都会调用我的类?
我有两个按钮,其中一个需要使用<f:convertDateTime>
,而另一个需要在按钮点击时禁用<f:convertDateTime>
。
我尝试了rendered
和disabled
属性,但它们没有起作用,这是我的错误,因为根据API文档,它们不可用。
此外,是否有一种方法可以覆盖javax.faces.converter.DateTimeConverter
类,以便每当触发f:convertDateTime
时都会调用我的类?
<converter>
<converter-id>javax.faces.DateTime</converter-id>
<converter-class>com.example.YourDateTimeConverter</converter-class>
</converter>
<f:convertDateTime>
作业,请委托给super
,只要您的转换器extends
自DateTimeConverter
。
例如,在getAsObject()
中:
public class YourDateTimeConverter extends DateTimeConverter {
@Override
public void getAsObject(FacesContext context, UIComponent component, String submittedValue) {
// ...
if (yourCondition) {
// Do your preferred way of conversion here.
// ...
return yourConvertedDateTime;
} else {
// Do nothing. Just let default f:convertDateTime do its job.
return super.getAsObject(context, component, submittedValue);
}
}
// ...
}
我猜测你是基于按钮点击来显示一些文本(如果我错了请纠正我)。那么应该是这样的:
<h:commandButton value="Convert" action="#{bean.doBtnConvert}" />
<h:commandButton value="Don't convert" action="#{bean.doBtnDontConvert}" />
<h:panelGroup id="pgText">
<h:outputText value="#{bean.someDateTime}" rendered="#{bean.convert}">
<f:convertDateTime pattern="dd.MM.yyyy HH:mm:ss" />
</h:outputText>
<h:outputText value="#{bean.someDateTime}" rendered="#{not bean.convert}"> />
</h:panelGroup>
在bean中,您有以下字段和方法:
private Date someDate;
private boolean convert;
public String doBtnConvert(){
setConvert(true);
String viewId = FacesContext.getCurrentInstance().getViewRoot().getViewId();
return viewId + "?faces-redirect=true";
}
public String doBtnDontConvert(){
setConvert(false);
String viewId = FacesContext.getCurrentInstance().getViewRoot().getViewId();
return viewId + "?faces-redirect=true";
}
// getter and setter for 'someDate' and 'convert' fields