<s:formattedText>
描述
输出 Seam Text,一种富文本标记,对于博客、Wiki和其他可能使用富文本的应用程序很有用。完整的用法请见Seam Text章节。
属性
value — 一个指定要渲染的富文本标记的EL表达式。
用法
<s:formattedText value="#{blog.text}"/>实例
<s:validateFormattedText>
描述
检查提交的值是否合乎Seam Text
属性
无。
<s:fragment>
描述
一个非渲染的组件,用于启用/取消它子组件的渲染。
属性
无。
用法
<s:fragment rendered="#{auction.highBidder ne null}"> Current bid:</s:fragment><s:graphicImage>
描述
一个允许在Seam Component中创建图片的扩展了的 <h:graphicImage>;可以对图片进行进一步转换。
支持 <h:graphicImage> 的所有属性,以及:
属性
value — 要显示的图片。可以是一个路径 String(从classpath加载)、 byte[]、java.io.File、java.io.InputStream 或者 java.net.URL。 目前支持的图片格式有 image/png、image/jpeg 和 image/gif。
fileName — 如果没有指定,图片将有一个通用的文件名。 如果你想要自己给文件命名,就应该在这里指定。这个名称应该是唯一的。
转换
为了给图片应用一种转换,你要嵌套一个指定要应用的转换的标签。Seam目前支持下面这些转换:
<s:transformImageSize> s:transformImageSizewidth — 图片的新宽度
height — 图片的新高度
maintainRatio — 如果为 true,并且指定了其中 一个 width/height,图片将利用不确定的、正被计算用来维持纵横比的尺寸调整大小。
factor — 通过指定的比例缩放图片
<s:transformImageBlur>radius — 利用指定的半径执行一个渐变模糊
<s:transformImageType>contentType — 将图片的类型变成 image/jpeg 或者 image/png
创建你自己的转换很容易——创建一个 实现 了 org.jboss.seam.ui.graphicImage.ImageTransform 的 UIComponent。 在 applyTransform() 方法内部使用 image.getBufferedImage() 来获得原始图片,用 image.setBufferedImage() 来设置你转换后的图片。转换以视图中指定的顺序进行。
用法
<s:graphicImage rendered="#{auction.image ne null}" value="#{auction.image.data}"> <s:transformImageSize width="200" maintainRatio="true"/></s:graphicImage><s:link>
描述
通过控制对话传播支持动作调用的链接。不提交表单。
属性
value — 标签。
action — 指定动作监听者的一种方法绑定。
view — 链接的JSF view id。
fragment — 链接的fragment标识符。
disabled — 该链接处于取消状态吗?
propagation — 确定对话传播风格:begin、join、nest、none 或者 end。
pageflow — 起始的页面流定义。 (这只在 propagation="begin" 或者 propagation="join"的时候才有用。)
用法
<s:link id="register" view="/register.xhtml" value="Register New User"/><s:message>
描述
”装饰“一个包含验证出错消息的JSF输入域。
属性
无。
用法
<f:facet name="afterInvalidField"> <s:span> Error: <s:message/> </s:span></f:facet><s:label>
描述
装饰一个包含标签的JSF输入域。这个标签放在HTML <label> 标签内部,且与最近的JSF输入组件相关联。 它经常与 <s:decorate> 共用。
Attributes 属性
style — 控件的样式
styleClass — 控件的样式类
用法
<s:label styleClass="label"> Country:</s:label><h:inputText value="#{location.country}" required="true"/><s:remote>
描述
用Seam Remoting生成所需要的JavaScript存根(stub)。
属性
include — 一个要为其生成Seam Remoting JavaScript 存根的以逗号分隔的组件名列表(或者合法的全类名)。 更多详情请见 Chapter 21, Remoting。
用法
<s:remote include="customerAction,accountAction,com.acme.MyBean"/><s:selectDate>
描述
已被废弃。 用 <rich:calendar /> 代替。
显示一个动态的日期选择器组件,它给指定的输入域选择日期。 selectDate 元素的主体应该包含HTML元素,例如文本或者图片,提示用户点击以显示日期选择器。 日期选择器 必须 利用CSS定义样式。 可以在Seam booking demo中找到CSS范例文件 date.css ,或者可以利用seam-gen生成。 用来控制日期选择器外观的CSS样式也在下面做了说明。
属性
for — 日期选择器要把选择的日期插入到其中的输入域的id。
dateFormat — 日期格式的字符串。这应该与输入域的日期格式匹配。
startYear — 弹出年选择器范围将从这一年开始。
endYear — 弹出年选择器范围将从这一年终止。
firstDayOfWeek — 控制哪一天是一周的第一天(0 = Sunday, 6 = Saturday)。 如果没有设置这个属性,那么一周的第一天默认将基于用户所在的区域。
用法
<div class="row"> <h:outputLabel for="dob">Date of birth<em>*</em></h:outputLabel> <h:inputText id="dob" value="#{user.dob}" required="true"> <s:convertDateTime pattern="MM/dd/yyyy"/> </h:inputText> <s:selectDate for="dob" startYear="1910" endYear="2007"> <img src="img/datepicker.png"/> </s:selectDate> <div class="validationError"><h:message for="dob"/></div></div>
范例
CSS样式
以下列表描述了用来控制selectDate控件样式的CSS类名。
seam-date — 这个类用于包含弹出日历的外层 div。 (1) 它还用于控制日历内部布局的 table。 (2)
seam-date-header — 这个类用于日历头表行(tr)和头表单元(td)。 (3)
seam-date-header-prevMonth — 用于”前一个月“表单元(td),点击它时,导致日历显示当前显示的前一个月。 (4)
seam-date-header-nextMonth — 这个类用于”下一个月“表单元(td),点击它时,导致日历显示当前显示的下一个月。 (5)
seam-date-headerDays — 这个类用于历日header行(tr),它包含了周日期的名称。 (6)
seam-date-footer — 这个类用于日历的footer行(tr),它显示当前日期。 (7)
seam-date-inMonth — 这个类用于包含了当前显示月份中的一个日期的表单元(td)元素。 (8)
seam-date-outMonth — 这个类用于包含了当前显示月份之外的一个日期的表单元(td)元素。 (9)
seam-date-selected — 这个类用于包含当前选择日期的表单元td元素。 (10)
seam-date-dayOff-inMonth — 这个类用于包含当前选择月份之内的”休假“日(例如周末,周六和周日)的表单元元素。 (11)
seam-date-dayOff-outMonth — 这个类用于包含当前选择的月份之外的休假日(例如周末,周六和周日)的表单元元素。 (12)
seam-date-hover — 这个类用于鼠标经过的表单元(td)元素。 (13)
seam-date-monthNames — 这个类用于包含弹出月份选择器的 div 控件。 (14)
seam-date-monthNameLink — 这个类用于包含弹出月份名称的anchor(a控件。 (15)
seam-date-years — 这个类用于包含弹出年选择器的div控件。 (16)
seam-date-yearLink — 这个类用于包含弹出年份的anchor(a)控件。 (17)
<s:selectItems>
描述
从一个List、Set、DataModel或者Array中创建一个 List<SelectItem> 。
属性
value — 一个EL表达式,指定支持 List<SelectItem> 的数据;
var — 定义迭代期间保存当前对象的本地变量的名称。
label — 渲染 SelectItem 时要使用的标签。可以参考 var 变量。
disabled — 如果为true,SelectItem 将被取消渲染。可以参考 var 变量。
noSelectionLabel — 指定(可选)标签放在列表的顶部(如果也指定 required="true",那么选择这个值将导致验证出错)。
hideNoSelectionLabel — 如果为true,选择一个值时,noSelectionLabel 将被隐藏。
用法
<h:selectOneMenu value="#{person.age}" converter="#{converters.ageConverter}"> <s:selectItems value="#{ages}" var="age" label="#{age}" /></h:selectOneMenu><s:span>
描述
渲染一个HTML的<span>。
属性
无。
用法
<s:span styleClass="required" rendered="#{required}">*</s:span><s:taskId>
描述
当任何可以通过 #{task} 使用的时候,将任何id添加到一个输出链接(或者类似的JSF控件)。只用于Facelets。
属性
无。
<s:validate>
描述
一个非可视化的控件,利用 Hibernate Validator 对绑定属性验证一个JSF输入域。
属性
无。
用法
<h:inputText id="userName" required="true" value="#{customer.userName}"> <s:validate /></h:inputText><h:message for="userName" styleClass="error" /><s:validateAll> s:validateAll
描述
一个非可视化的控件,利用 Hibernate Validator 对它们绑定的属性验证所有的子JSF输入域。
属性
无。
用法
<s:validateAll> <div class="entry"> <h:outputLabel for="username">Username:</h:outputLabel> <h:inputText id="username" value="#{user.username}" required="true"/> <h:message for="username" styleClass="error" /> </div> <div class="entry"> <h:outputLabel for="password">Password:</h:outputLabel> <h:inputSecret id="password" value="#{user.password}" required="true"/> <h:message for="password" styleClass="error" /> </div> <div class="entry"> <h:outputLabel for="verify">Verify Password:</h:outputLabel> <h:inputSecret id="verify" value="#{register.verify}" required="true"/> <h:message for="verify" styleClass="error" /> </div></s:validateAll>为了允许你用Seam组件作为JSF转换器和验证器,Seam也提供注解:
@Converter @Name("fooConverter")@BypassInterceptors@Converterpublic class FooConverter implements Converter { @In EntityManager entityManager; @Transactional public Object getAsObject(FacesContext context, UIComponent cmp, String value) { EntityManager entityManager = (EntityManager) Component.getInstance("entityManager"); entityManager.joinTransaction(); // Do the conversion } public String getAsString(FacesContext context, UIComponent cmp, Object value) { // Do the conversion }}将Seam组件注册为一个JSF转换器。这里展示的是,在将值转换回它的对象表示法的时候,能够访问JTA事务中的JPA EntityManager的转换器。
@Validator @Name("barValidator")@BypassInterceptors@Validatorpublic class BarValidator implements Validator { @In FooController fooController; public void validate(FacesContext context, UIComponent cmp, Object value) throws ValidatorException { FooController fooController = (FooController) Component.getInstance("fooController"); return fooController.validate(value); }}将Seam组件注册为一个JSF验证器。这里展示的是,一个注入另一个Seam组件的验证器;注入的组件用来验证值。