小生第一次用JSF的时间控件<p:calendar>,绑定了相关的Bean后,想着不能让用户随意输入时间值,于是写了以下页面代码:
<p:calendar id="startDate" readonly="true" pattern="yyyy-MM-dd" value="#{myBean.startDate}" />
相关的Bean代码如下:
import java.util.Date;
public class MyBean{
private Date startDate;
public Date getStartDate(){
return this.startDate;
}
public void setStartDate(Date date){
this.startDate = date;
}
}
本以为这样写应该就OK了,可是结果发现在MyBean中startDate的值一直为Null,让我百思不得其解。后来在无意中去掉了<p:calendar>的 "readonly='true'"的属性后,发现MyBean中居然有值了!
于是我个人认为在JSF中因为是与Bean相绑定的,而一旦设置了readonly="true"后,并不代表页面文本框无法输入,而应该是相应的Bean的setXXX方法无效,从而达到“只读”的目的。
以上为个人愚见,如有不妥之处,望大家指出。至于如何禁止文本框输入没想到很好的方法,以后有空再找找资料了。