六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 53|回复: 0

JSF 由于 rendered 导致 得到属性值为null的解决办法

[复制链接]

升级  18%

19

主题

19

主题

19

主题

秀才

Rank: 2

积分
77
 楼主| 发表于 2013-1-23 02:14:58 | 显示全部楼层 |阅读模式
前段时间用JSF时遇到如下问题.
问题描叙:
      页面有一个 单选控件(h:selectOneRadio) 添加 ajax 支持(a4j:support event="onclick" reRender=""),当选择某个选项的时候会有不同的操作,因此界面会有不同的展示.
      可变化部分用到 rendered 属性在后台控制展现逻辑.
      问题出现:点击不同的选项,可变化部分的页面展示没有问题,提交(SUBMIT)的时候,不会变化的部分取值没有问题,变化展示部分的属性值,不能取到,跟踪之后发现值为null.(不存在属性名称没对应上的错误)
      
      解决办法1.
      用decode()方法
     
// cform 为表单 idUIComponent component=FacesContext.getCurrentInstance().getViewRoot().findComponent("cform");//day 为 文本输入框idif(component!=null){((UIInput)component.findComponent("day")).decode(FacesContext.getCurrentInstance());//day 为bean 中属性值day=(String)(((UIInput)component.findComponent("day")).getSubmittedVale()); 
    解决办法2
    用session 在 set 单选控件属性值的时候 把 属性值放入session中
  
public void setXXX(String XXX){FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("xxx",xxx);}//然后在构造方法中把xxx值从session 中赋上去public ClassName(){xxx=FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("xxx");}   
   
    
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表