Seam JSF 控件

【转】 Seam的JSF控件(二)
2010-07-05 14:21
转载自 030721117
最终编辑 030721117

<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.Filejava.io.InputStream 或者 java.net.URL 。 目前支持的图片格式有 image/pngimage/jpegimage/gif

  • fileName — 如果没有指定,图片将有一个通用的文件名。 如果你想要自己给文件命名,就应该在这里指定。这个名称应该是唯一的。

转换

为了给图片应用一种转换,你要嵌套一个指定要应用的转换的标签。Seam目前支持下面这些转换:

<s:transformImageSize> s:transformImageSize
  • width — 图片的新宽度

  • height — 图片的新高度

  • maintainRatio — 如果为 true ,并且指定了其中 一个 width /height ,图片将利用不确定的、正被计算用来维持纵横比的尺寸调整大小。

  • factor — 通过指定的比例缩放图片

<s:transformImageBlur>
  • radius — 利用指定的半径执行一个渐变模糊

<s:transformImageType>
  • contentType — 将图片的类型变成 image/jpeg 或者 image/png

创建你自己的转换很容易——创建一个 实现org.jboss.seam.ui.graphicImage.ImageTransformUIComponent 。 在 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 — 确定对话传播风格:beginjoinnestnone 或者 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>
&#160;Error:&#160;
<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>

29.2. 注解

为了允许你用Seam组件作为JSF转换器和验证器,Seam也提供注解:

@Converter
@Name("fooConverter")
@BypassInterceptors
@Converter
public 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
@Validator
public 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组件的验证器;注入的组件用来验证值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值