PrimeFaces旋转器修改的步骤因子



我正在尝试稍微修改旋转器的步骤因子。我的目的是踏上确切的数字。因此,例如,我的步骤因子为0.25,我写入旋转器的数字为0.8,它将向前跳到1.05,向后至0.55。但是我的目的是介入步骤因素的确切因素。因此,在这种情况下,它应该跳到0.75和1。

这是我现在获得的日历的代码:

<prime:spinner id="inputHoursMonday"
value="#{attendance.value}" size="5"
max="#{bean.hoursMaxValue}" stepFactor="0.25"
min="0"
disabled="#{attendance.hoursBookedForAttendance}"/>

预先感谢您。

正如我所说的一些选择,我希望该值是我的答案的双倍。如果您有多个旋转器,我建议使用转换器,因为您可以将其添加到每个旋转器中。

注意:如果要在更改旋转器后立即查看正确的值,则只需添加p:ajax。如果可以等到表单提交和更新您不需要添加Ajax。

1。选项:侦听器

html:

<prime:spinner value="#{bean.value}" max="#{bean.hoursMaxValue}"><p:ajax Listener="#{bean.valueChangeEvent}" update="@this"/></prime:spinner>

bean:

public void valueChangeListener(AjaxBehaviorEvent event){
   value = (double)Math.round(value*4)/4;
}

2。选项:修改设置器和Getter

html:

<prime:spinner value="#{bean.value}"><p:ajax update="@this"/></prime:spinner>

bean:

public double getValue(){
  return (double)Math.round(value*4)/4;
}
public void setValue(double value){
   this.value = (double)Math.round(value*4)/4;
}

3。选项:转换器

注意:如果使用转换器,则不需要修改任何内容。

html:

<prime:spinner value="#{bean.value}" converter="SpinnerConverter"><p:ajax update="@this"/></prime:spinner>

转换器:

@FacesConverter("SpinnerConverter")
public class SpinnerConverter implements Converter, Serializable {
    private static final long serialVersionUID = 1L;
    public SpinnerConverter() {
    }
    @Override
    public String getAsString(FacesContext context, UIComponent component, Object value) {
        try {           
            Double doubleValue = Double.parseDouble(value);     
            return String.valueOf((double)Math.round(doubleValue*4)/4);
        } catch (Exception ex) {
            throw new ConverterException(ex);
        }
    }
    @Override
    public Double getAsObject(FacesContext context, UIComponent component, String value) {
        try {
            Double doubleValue = Double.parseDouble(value);         
            return (double)Math.round(doubleValue*4)/4;
        }
        catch (Exception ex) {
            throw new ConverterException(ex);
        }
    }
}

最新更新