Jsf 2 使用p:cellEditor编辑时,限制在p:calander中选择过去日期

Jsf 2 使用p:cellEditor编辑时,限制在p:calander中选择过去日期,jsf-2,primefaces,Jsf 2,Primefaces,我希望用户在使用p:cellEditor进行编辑时,限制在p:calander中选择过去日期(即当前日期之前) <p:column style="width:120px;" sortBy="#{v.promoDate}" headerText="Action Date"> <p:cellEditor> <f:facet name="output"> <h:outputText value="#{v.prom

我希望用户在使用p:cellEditor进行编辑时,限制在p:calander中选择过去日期(即当前日期之前)

<p:column style="width:120px;" sortBy="#{v.promoDate}" headerText="Action Date">
    <p:cellEditor>
        <f:facet name="output">
            <h:outputText value="#{v.promoDateString}" />
        </f:facet>
        <f:facet name="input">
            <p:calendar readonlyInput="true" value="#{v.promoDate}" pattern="MMM dd, yyyy" />
        </f:facet>
    </p:cellEditor>
</p:column>

Bean-onEdit方法

public void onEdit(RowEditEvent event) {
    setEditMode(true);
    foodPromoDTO = (FoodPromotionDTO) event.getObject();
    Map<String, Object> sessMap = CommonUtil.getSessionMap();
    SessionDTO sessionDTO = (SessionDTO) sessMap.get(WebConstants.SESSION_DTO);
    String eid = sessionDTO.getUserDetailsDTO().getEid();
    Integer roleCountryId = sessionDTO.getLoggedinUserRoleCountryId();
    getDashboardService().addFoodPromotion(foodPromoDTO, eid, editMode, roleCountryId, sessionDTO.getLoggedinCountryCode());
    myFoodList = getFoodPromoList();
}
public void onEdit(RowEditEvent事件){
setEditMode(真);
FoodPromotedTo=(FoodPromotionDTO)事件。getObject();
Map sessMap=CommonUtil.getSessionMap();
SessionDTO SessionDTO=(SessionDTO)sessMap.get(WebConstants.SESSION\u DTO);
字符串eid=sessionDTO.GetUserDetailsTo().getEid();
整数roleCountryId=sessionDTO.getLoggedinUserRoleCountryId();
getDashboardService();
myFoodList=getFoodPromoList();
}

以下是一个示例代码,可满足您的需要:

视图

<p:growl autoUpdate="true" showDetail="true" />

<h:form id="mainForm">
    <p:dataTable value="#{celleditionMBean.list}" var="item" editable="true" editMode="cell" widgetVar="dtVar">

        <p:ajax event="cellEdit" listener="#{celleditionMBean.onEdit}" process="date" />

        <p:column style="width:120px;" headerText="Action Date">
            <p:cellEditor>
                <f:facet name="output">
                    <h:outputText value="#{item.promoDate}" >
                        <f:convertDateTime dateStyle="date" pattern="MM dd, yyyy" />
                    </h:outputText>
                </f:facet>
                <f:facet name="input">
                    <p:calendar id="date" readonlyInput="true" value="#{item.promoDate}" pattern="MM dd, yyyy" mindate="#{celleditionMBean.current}" />
                </f:facet>
            </p:cellEditor>
        </p:column>
    </p:dataTable>
</h:form>

托管Bean

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import org.primefaces.event.CellEditEvent;

@ManagedBean
@ViewScoped
public class CelleditionMBean implements Serializable {

    private List<SimpleBean> list;

    private Date current;

    @PostConstruct
    public void setup() {
        current = new Date();
        list = new ArrayList<SimpleBean>();
        list.add(new SimpleBean(11, "A"));
        list.add(new SimpleBean(22, "B"));
        list.add(new SimpleBean(33, "C"));
    }

    public void onEdit(CellEditEvent event) {
        FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Cell Changed", "Changed");
        FacesContext.getCurrentInstance().addMessage(null, msg);
    }

    public List<SimpleBean> getList() {
        return list;
    }

    public void setList(List<SimpleBean> list) {
        this.list = list;
    }

    public Date getCurrent() {
        return current;
    }

    public void setCurrent(Date current) {
        this.current = current;
    }

}
import java.io.Serializable;
导入java.util.ArrayList;
导入java.util.Date;
导入java.util.List;
导入javax.annotation.PostConstruct;
导入javax.faces.application.FacesMessage;
导入javax.faces.bean.ManagedBean;
导入javax.faces.bean.ViewScoped;
导入javax.faces.context.FacesContext;
导入org.primefaces.event.CellEditEvent;
@ManagedBean
@视域
公共类CelleditionMBean实现可序列化{
私人名单;
私有日期当前;
@施工后
公共作废设置(){
当前=新日期();
列表=新的ArrayList();
添加(新SimpleBean(11,“A”);
添加(新SimpleBean(22,“B”);
增加(新SimpleBean(33,“C”);
}
public void onEdit(CellEditEvent事件){
FacesMessage msg=新的FacesMessage(FacesMessage.SEVERITY_信息,“单元格已更改”,“已更改”);
FacesContext.getCurrentInstance().addMessage(null,msg);
}
公共列表getList(){
退货清单;
}
公共无效集合列表(列表){
this.list=列表;
}
公共日期getCurrent(){
回流;
}
公共作废设置当前日期(当前日期){
这个电流=电流;
}
}