Seam的JSF控件(一)

    技术2022-05-19  25

    为了使用这些tagsd,要在你的页面中定义“s”命名空间如下(只用于Facelets):

    <html xmlns="http://www.w3.org/1999/xhtml" xmlns:s="http://jboss.com/products/seam/taglib">

    ui的例子,示范了这其中许多标签的用法。

    Table 29.1. Seam的JSF控件参考

    <s:button>

    描述

    通过控制对话传播支持动作调用的按钮。不提交表单。

    属性

    value — 标签

    action — 指定动作监听者的一种方法绑定。

    view — 链接的JSF view id。

    fragment — 链接的fragment标识符。

    disabled — 该链接处于取消状态吗?

    propagation — 确定对话传播风格:begin、join、nest、none 或者 end。

    pageflow — 起始的页面流定义。 (这只在 propagation="begin" 或者 propagation="join" 的时候才有用。)

    用法

    <s:button id="cancel" value="Cancel" action="#{hotelBooking.cancel}"/>

    <s:cache>

    描述

    利用JBoss的Cache缓存渲染过的页面片断。 注意 <s:cache> 实际上使用由内建的 pojoCache 组件管理的JBoss Cache的实例。

    属性

    key — 是缓存渲染过的内容的键,经常是一个值表达式。 例如,如果我们在缓存一个显示文档的页面片断,我们可以使用 key="Document-#{document.id}"。

    enabled — 是一个值表达式,决定是否应该使用缓存。

    region — 是一个要使用的JBoss Cache节点(不同的节点可以有不同的过期策略)。

    Usage 用法

    <s:cache key="entry-#{blogEntry.id}" region="pageFragments"> <div class="blogEntry"> <h3>#{blogEntry.title}</h3> <div> <s:formattedText value="#{blogEntry.body}"/> </div> <p> [Posted on  <h:outputText value="#{blogEntry.date}"> <f:convertDateTime timezone="#{blog.timeZone}" locale="#{blog.locale}" type="both"/> </h:outputText>] </p> </div></s:cache>

    <s:conversationId>

    描述

    将对话id添加到一个输出链接(或者类似的JSF控件)。只用于Facelets。

    属性

    无。

    <s:conversationPropagation>

    描述

    给一个命令链接或者按钮定制对话传播(或者类似的JSF控件)。只用于Facelets。

    属性

    propagation — 确定对话传播风格;begin、join、nest、none 或者 end。

    pageflow — 是一个起始页面流定义。 (这只在 propagation="begin" 或者 propagation="join" 的时候才有用。)

    用法

    <h:commandButton value="Apply" action="#{personHome.update}"> <s:conversationPropagation type="join" /></h:commandButton>

    <s:convertDateTime>

    描述

    在Seam的timezone中执行日期或者时间对话。

    属性

    无。

    用法

    <h:outputText value="#{item.orderDate}"> <s:convertDateTime type="both" dateStyle="full"/></h:outputText>

    <s:convertEntity>

    描述

    给当前的组件分配一个实体转换器。这主要对单选按钮和下拉控件有用。

    转换器使用任何具有 @Id 注解(简单的或者复合的)的受控实体。

    属性

    无。

    配置

    你必须通过 <s:convertEntity /> 使用 Seam管理的事务 (请见Section 8.2, “Seam管理的事务”)

    如果你的 受控持久化上下文 不是称作 entityManager,那你就需要在 components.xml 中设置它:

    <component name="org.jboss.seam.ui.EntityConverter"> <property name="entityManager">#{em}</property></component>

    如果你想在实体转换器上使用不止一个实体管理器,你可以在componets.xml中为每一个实体管理器创建一份实体转换器。

    <component name="myEntityConverter" class="org.jboss.seam.ui.converter.EntityConverter"> <property name="entityManager">#{em}</property></component> <h:selectOneMenu value="#{person.continent}"> <s:selectItems value="#{continents.resultList}" var="continent" label="#{continent.name}" /> <f:converter converterId="myEntityConverter" /></h:selectOneMenu>

    用法

    <h:selectOneMenu value="#{person.continent}" required="true"> <s:selectItems value="#{continents.resultList}" var="continent" label="#{continent.name}" noSelectionLabel="Please Select..."/> <s:convertEntity /></h:selectOneMenu>

    <s:convertEnum>

    描述

    给当前的组件分配一个enum转换器。这主要对单选按钮和下拉控件有用。

    属性

    无。

    用法

    <h:selectOneMenu value="#{person.honorific}"> <s:selectItems value="#{honorifics}" var="honorific" label="#{honorific.label}" noSelectionLabel="Please select" /> <s:convertEnum /></h:selectOneMenu>

    <s:decorate>

    描述

    在验证失败或者设置了 required="true" 时,“装饰”一个JSF输入域。

    属性

    template — 用来装饰组件的Facelets模板。

    #{invalid} 和 #{required} 可以在 s:decorate 内使用; 如果你按要求设置了正被装饰的输入组件,#{required} 就取值为 true, 并且如果发生校验错误, #{invalid} 取值为 true。

    用法

    <s:decorate template="edit.xhtml"> <ui:define name="label">Country:</ui:define> <h:inputText value="#{location.country}" required="true"/> </s:decorate> <ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:s="http://jboss.com/products/seam/taglib"> <div> <s:label styleClass="#{invalid?'error':''}"> <ui:insert name="label"/> <s:span styleClass="required" rendered="#{required}">*</s:span> </s:label> <span class="#{invalid?'error':''}"> <s:validateAll> <ui:insert/> </s:validateAll> </span> <s:message styleClass="error"/> </div></ui:composition>

    <s:div>

    描述

    渲染一个HTML<div>。

    属性

    无。

    用法

    <s:div rendered="#{selectedMember == null}"> Sorry, but this member does not exist.</s:div>

    <s:enumItem>

    描述

    从一个enum值中创建一个 SelectItem。

    属性

    enumValue — 是enum值的字符串表示法。

    label — 在渲染 SelectItem 时要使用的标签。

    用法

    <h:selectOneRadio id="radioList" layout="lineDirection" value="#{newPayment.paymentFrequency}"> <s:convertEnum /> <s:enumItem enumValue="ONCE" label="Only Once" /> <s:enumItem enumValue="EVERY_MINUTE" label="Every Minute" /> <s:enumItem enumValue="HOURLY" label="Every Hour" /> <s:enumItem enumValue="DAILY" label="Every Day" /> <s:enumItem enumValue="WEEKLY" label="Every Week" /></h:selectOneRadio>

    <s:fileUpload>

    描述

    渲染一个文件上载控件。这个控件必须通过在form中使用 multipart/form-data 的编码类型,例如:

    <h:form enctype="multipart/form-data">

    对于多部分请求,也必须在 web.xml 中配置Seam Multipart Servlet过滤器:

    <filter> <filter-name>Seam Filter</filter-name> <filter-class>org.jboss.seam.servlet.SeamFilter</filter-class></filter><filter-mapping> <filter-name>Seam Filter</filter-name> <url-pattern>/*</url-pattern></filter-mapping>

    配置

    下列多部分请求的配置选项可以在 components.xml 中进行配置:

    createTempFiles — 如果这个选择设置为true,上载好的文件就流向一个临时文件,而不是流向内存。

    maxRequestSize — 允许上载文件的最大字节数。

    下面是一个例子:

    <component class="org.jboss.seam.web.MultipartFilter"> <property name="createTempFiles">true</property> <property name="maxRequestSize">1000000</property></component>

    属性

    data — 这个值绑定接收二进制文件数据。 接收域应该声明为一个 byte[] 或者 InputStream (必要)。

    contentType — 这个值绑定接收文件的内容类型(可选)。

    fileName — 这个值绑定接收的文件名(可选)。

    fileSize — 这个值绑定接收的文件大小(可选)。

    accept — 可以接受的一个以逗号分隔的内容类型列表,可能浏览器不支持。 例如 "images/png,images/jpg"、"images/"。

    style — 控件的样式,即CSS之类的

    styleClass — 控件的样式类

    用法

    <s:fileUpload id="picture" data="#{register.picture}" accept="image/png" contentType="#{register.pictureContentType}" />

     


    最新回复(0)