首页编程uicomponent?uidata是什么

uicomponent?uidata是什么

编程之家2023-11-0778次浏览

你是否想了解更多关于uicomponent和uidata是什么的知识?在本文中,小编将为您详细介绍这两个话题,帮助您更好地理解。

uicomponent?uidata是什么

uidata是什么

猪哥解答:

UI知道吧,UI界面这个名词如果不懂的话百度一下,Data你也应该知道是什么意思,连起来UIData可以理解为页面数据,页面的Table、Tree什么的可以用UIData来封装处理,下面给你转一个实例,也许会对你有帮助。

猪哥转帖:

UIData:表示数据集合,每个数据项由DataModel(标准JSF UIComponent Model Bean之一)的一个实例封装。该组件通常用来渲染表格、列表和树。

实例:

新建一个实体bean

uicomponent?uidata是什么

package org.abc.jsf.vo;

public class ArticleVO{

private int id;

private String title;

private String body;

public ArticleVO(){

uicomponent?uidata是什么

}

//getter setter

新建from类,jsf都是调用这类的方法

package org.abc.jsf.from;

import java.util.ArrayList;

import java.util.List;

import javax.faces.component.UIData;

import javax.faces.event.ActionEvent;

import jsftest.dal.ArticleDAL;

import jsftest.vo.ArticleVO;

import java.util.Collection;

public class ArticleForm{

private int id=0;

private String title;

private String body;

private ArrayList articles;

public ArticleForm(){

loadall();

}

private ArticleDAL dal=new ArticleDAL();

public void save()

{

ArticleVO vo=new ArticleVO();

vo.setBody(this.getBody());

vo.setTitle(this.getTitle());

if(this.getId()!=0)

{

vo.setId(this.getId());

}

dal.saveArticle(vo);

}

public void edit(ActionEvent event)

{//取页面集合的值

UIData table=(UIData) event.getComponent().getParent().getParent();

ArticleVO vo=new ArticleVO();//实例化ArticleVO

vo=(ArticleVO)table.getRowData();

this.setBody(vo.getBody());

this.setId(vo.getId());

this.setTitle(vo.getTitle());

}

public void delete(ActionEvent event)

{

UIData table=(UIData) event.getComponent().getParent().getParent();

ArticleVO vo=(ArticleVO)table.getRowData();

dal.deleteArticle(vo);

dal.LoadArticleAll();

}

public void loadall()

{

this.setArticles((ArrayList)dal.LoadArticleAll());

}

public String getBody(){

return body;

}

public int getId(){

return id;

}

public String getTitle(){

return title;

}

public Collection getArticles(){

//this.loadall();

if(articles==null)

{

articles=new ArrayList();

}

return articles;

}

public void setBody(String body){

this.body= body;

}

public void setId(int id){

this.id= id;

}

public void setTitle(String title){

this.title= title;

}

public void setArticles(ArrayList articles){

this.articles= articles;

}

}

前台页面:

<%@ page contentType="text/html; charset=GBK"%>

<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%>

<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%>

<html>

<head>

<title>

jsp1

</title>

</head>

<body bgcolor="#ffffff">

<h:form>

<div align="left">

标题<h:inputText id="title" value="#{article.title}"/><br>

内容<h:inputTextarea id="currentMessage" value="#{article.body}" rows="10" cols="60"/>

<h:inputHidden value="#{article.id}"/>

</div>

<div align="center">

<h:commandButton value="save" action="#{article.save}"/>

</div>

<div align="center">

<h:commandButton value="clear" type="reset"/>

</div>

*************************************************************

<h:dataTable id="table" rowClasses="list-row" value="#{article.articles}" var="articles">

<h:column>

<h:outputText styleClass="small" value="#{articles.id}"/>

</h:column>

<h:column>

<h:commandLink id="editLink" actionListener="#{article.edit}">//绑定监听

<h:outputText value="edit"/>

</h:commandLink>

</h:column>

<h:column>

<h:commandLink id="deleteLink" actionListener="#{article.delete}">

<h:outputText value="delete"/>

</h:commandLink>

</h:column>

<h:column>

<h:outputText value="#{articles.title}"/>

</h:column>

<h:column>

<h:outputText value="#{articles.body}"/>

</h:column>

</h:dataTable>

</h:form>

</body>

</html>

如何使用FacesContext类

在Faces API中有两个类是要经常使用的.一个是FacesContext一个是ExternalContext,本篇文章讲解如何使用前者,在下面的一篇文章中在继续讲解任何使用后者:

对每个JSF请求,FacesServlet对象都会为其获取一个javax.faces. context.

FacesContext类的实例。FacesServlet对象将下列3个取自Web容器的对象传给javax.faces.context.FacesContextFactory对象的getFacesContext方法,以此来做到这一点:

● javax.servlet.ServletContext

● javax.servlet.ServletRequest

● javax.servlet.ServletResponse

这意味着FacesContext的实例里包含了所有处理JSF请求所需的每个请求的状态信息。图3-1展示了FacesContext实例里封装的其他一些对象。

如何使用FacesContext类

图3-1 FacesContext实例及其封装的对象

3.2.1获取当前实例

一个经常用到的方法是静态的getCurrentInstance方法,它返回当前的FacesContext实例。此方法的签名如下:

public static FacesContext getCurrentInstance()

下面的代码是一个用此方法获取FacesContext当前实例的例子:

FacesContext facesContext= FacesContext.getCurrentInstance();

3.2.2获取和修改组件树

FacesContext实例里最重要的内容是请求页面的组件树。组件树是由javax.faces.tree.Tree类来表示的(本章后面的“使用Tree类”一节会讨论)。FacesContext实例的tree属性就是Tree对象。

要获取或修改Tree对象,可使用tree属性的读取方法和赋值方法:

public abstract Tree getTree()

public abstract void setTree(Tree tree)

3.2.3添加和获取消息

在请求处理生命周期里,可能会遇到错误。比如,当验证器执行输入验证时,因为用户输入了不正确的值,验证可能失败;当组件试图把输入值转换为绑定到组件的模型对象所需的类型时,也可能会失败。所有消息都必须存放到FacesContext实例里以备后面进行处理。比如,您可能希望在页面里显示错误消息,从而为用户更正错误提供帮助。

错误消息是由javax.faces.application.Message接口(第11章再详细讨论)来表示的,您可以通过使用FacesContext类的addMessage方法向FacesContext实例里添加Message对象。这个方法的签名如下:

public abstract void addMessage(UIComponent component, Message message)

如果component不为空,新加入的message就关联到component上。否则,它就不与任何特定组件的实例相关。

举例来说,验证器在验证组件值失败时可调用FacesContext的addMessage方法,传入值无效的组件及一个包含特定错误消息的Message对象。

所有添加到FacesContext实例的Message对象都被加入到一个集合里。可通过调用getMessages方法的两个重载方法之一来获取加入的Message对象:

public abstract Iterator getMessages()

public abstract Iterator getMessages(UIComponent component)

第一种形式的调用在一个Iterator里返回所有Message对象,而第二种形式的调用则仅返回与给定UIComponent相关联的Message对象。

3.2.4添加和获取请求处理事件

UIComponent可以生成FacesEvent对象。比如,当单击一个UICommand组件时,它会生成一个ActionEvent对象(ActionEvent类是FacesEvent类的子类)。这个FacesEvent对象需要在FacesContext实例里保存起来,以备请求处理生命周期里的下一步处理事件时所用。

可通过使用FacesContext类的addFacesEvent方法向FacesContext实例添加FacesEvent对象。此方法的签名如下:

public abstract void addFacesEvent(FacesEvent event)

要提取先前添加的FacesEvent对象,可调用getFacesEvents方法,其签名如下:

public abstract Iterator getFacesEvents()

此方法返回FacesEvent时的顺序与其在队列中的顺序一致。

3.2.5向Response对象里写入信息

为了向Response对象里写入信息,FacesContext类提供了两个属性,一个是javax.faces.Context.ResponseStream类型,另一个是javax.faces.context.ResponseWriter类型。ResponseStream类型的对象用于输出二进制数据,而ResponseWriter类型的对象则用于输出字符。这些属性的读取方法和赋值方法如下:

public abstract ResponseStream getResponseStream()

public abstract void setResponseStream(ResponseStream responseStream)

public abstract ResponseWriter getResponseWriter()

public abstract void setResponseWriter(ResponseWriter responseWriter)

3.2.6获取和设置地区

第11章将会讨论到,JSF支持国际化和本地化。这意味着您可以根据用户的地区决定发送什么样的回应信息。locale属性里存放了当前处理中所用的Locale对象。

初始状况下,locale属性的值和网络浏览器里指定的地区是一样的,但可以修改这个值,从而发送输出所使用的地区将独立于浏览器所使用的地区。此属性的读取方法和赋值方法如下:

public abstract Locale getLocale()

public abstract void setLocale(Locale locale)

3.2.7操作请求处理生命周期

FacesContext类还提供了两个方法与请求处理生命周期进行交互:

●在当前阶段的处理完成后,调用renderResponse方法通知JSF实现把控制权转到呈现响应阶段。也就是说,处于当前阶段和呈现响应阶段之间的所有其他阶段都不再执行。

●调用responseComplete方法,告诉JSF实现此次请求的HTTP响应已经完成(比如在使用了HTTP重定向的情况下)。因此,当前阶段完成后,必须中止请求处理生命周期的处理。

这些方法的签名如下:

public abstract void renderResponse()

public abstract void responseComplete()

3.2.8获取其他请求状态信息

其他每个请求的状态信息封装在ExternalContext对象里,可以使用getExternalContext方法获取该对象:

public abstract ExternalContext getExternalContext()

好了,本文到此结束,如果可以帮助到大家,还望关注本站哦!

动态ip?什么是动态ipjquery ui,jQueryUI是什么以及有什么功能