<h:selectOneMenu> 传值问题
以前用jsf的 <h:selectOneMenu> 标签进行传值的时候经常遇到传到 backbean 是null 值的问题,就把代码改了又改,偶然一次发现一切正常了,可是到底是什么原因却一直没搞明白。今天有遇到这样的问题,折腾了一阵时间。又经过几次修改和测试,终于发现了问题的根本,原来是跟 <h:selectOneMenu> 标签的 readonly 属性有关:
当把 readonly 属性设置为 true 时,backbean 就再也得不到页面传过来的值了,每次打印都是 null,当把readonly 属性设置为 false 时 或不设置readonly(默认值)时,backbean 就能正确得到页面传过来的值。
我本来以为 <h:selectOneMenu> 的 readonly 属性只是控制 <h:selectOneMenu> 能不能被手动输入值,没想到还有这样一层意思。
readonly 属性值设置为 false 和不设置完全一样,都不能手动输入值,当然设置为 true 时也不能手动输入值,所以,<h:selectOneMenu> 的 readonly 属性应该是控制 <h:selectOneMenu> 标签能不能向 backbean 传值的吧,这一结论的正确选性还有待考证,当然也希望能正确理解这一问题的高手给出一个正确的解释。