随笔-348  评论-598  文章-0  trackbacks-0

第一种:

1.如在你的页面中有 <input   type= "hidden "   name= "classid "   value= "1 ">
注意要写在form中,并且要用name而不是id.
FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get( "classid ")可以得到。   

2.
<h:form   id= "f ">
<input   type= "hidden "   id= "classid "   value= "1 ">
</h:form>
FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get( "f:classid ")可以得到。

3.使用JSF自带的控件,则和2是一样的访问方法

以上方法就可以了,写id的时候,jsf会把form的id加进去 变成 formId:componentId 的格式

第二种:

就是通过findComponent方法获得控件实例,然后通过getValue方法获得值
HtmlInputText    text = (HtmlInputText) this.findComponent(this.FORM + ":"+ ENERGY_COMSUPTION_PREFIX + id);
String value = text.getValue().toString();

 public UIComponent findComponent(String name) {

  // 不能使用静态变量view保持当前的viewroot,因为每次操作之后的viewroot都是不一样的
  ViewRoot view = FacesContext.getCurrentInstance().getViewRoot();

  return view.findComponent(name);
 }

需要注意的是 不能使用静态变量view保持当前的viewroot,因为每次操作之后的viewroot都是不一样的。

对比以上两种方法,第一种简单方便,但只适合于取值操作。第二种可操控的范围和能力更大,不仅可以取值还可以设置和获得所有属性。



---------------------------------------------------------
专注移动开发

Android, Windows Mobile, iPhone, J2ME, BlackBerry, Symbian
posted on 2008-12-12 15:11 TiGERTiAN 阅读(4345) 评论(0)  编辑  收藏 所属分类: JavaJSF

只有注册用户登录后才能发表评论。


网站导航: