我正在尝试从后端创建一个primefaces面板。这就是我写的 -
Calendar calendar = new Calendar();
String expression = "#{calendarBean.date1}";
boolean _showButtonPanel = true;
calendar.setValue(expression);
calendar.setShowButtonPanel(_showButtonPanel );
Panel.getChildren().add(calendar);
但是我只能检索没有“calendar.setValue(expression);”的文本框。但是它会引发异常 -
com.sun.faces.context.PartialViewContextImpl$PhaseAwareVisitCallback visit
SEVERE: java.lang.IllegalArgumentException: Cannot format given Object as a Date
答案 0 :(得分:1)
您需要将一个值得满足的ValueExpression
设置为组件的值,而不是普通的字符串。
FacesContext facesContext = FacesContext.getCurrentInstance();
ValueExpression valueExpression = facesContext.getApplication().getExpressionFactory()
.createValueExpression(facesContext.getELContext(), "#{calendarBean.date1}", Date.class);
calendar.setValueExpression("value", valueExpression);
// ...
不要忘记设置ID,否则JSF将不会处理提交的值。
calendar.setId("date1");
// ...