JSF标签的使用1

#{…} 表达式的三种含义

n  指定输出值

Ø  #{ varName.propertyName }

         含义为输出特定范围域变量或托管bean的指定属性

Ø  < h:outputText value=“#{ employee.address }” />

         任何时候访问都是一个输出的文本

Ø  < h:inputText value=“#{ employee.address }” />

         当表单初始显示时,代表一个预装配的值

n  指定提交值

Ø  h: inputText value="#{ employee.address }“ />

         指定当表单提交时指定将值存放在何处

n  指定提交后的方法调用

Ø  < h: commandButton value="Button Label" action="#{ employee.processEmployee }“ />

         指定表单提交时的action处理器

 

 

 

 

 

 

n  ActionController

Ø  即便已经有ActionListener,但在某些情况下还需要ActionController

•    如前所说,它们调用业务逻辑和参与导航

•    Setter方法与验证会在ActionController执行处理前调用

n  C)ActionListener

Ø  ActionListener表现服务器端效果,并在表单上重新显示

•    通常,它们不调用业务逻辑、setter方法,且从不参与页面导航

•    正常情况下,你应该用”immediate”来显式指明setter方法不被调用

 

 

n  <h:form>

n  ...

n     <h:commandButton

n        value="#{resumeBean.colorSupportLabel}"

n        actionListener="#{resumeBean.toggleColorSupport}"

n        immediate="true"/>

n  </h:form>

 

 ActionListener能访问GUI对象底层详细信息:

如:Renderer、client ID等,当我们覆盖用户自定义控件时尤其需要。

最通用的例子:针对图形的客户端与服务器端映射

 

 

 

 

 

 

public void selectGrayLevel(ActionEvent event) {

         FacesContext context = FacesContext.getCurrentInstance();

         String clientId = event.getComponent().getClientId(context);

         HttpServletRequest request = (HttpServletRequest)context.getExternalContext().getRequest();

         takeActionBasedOn(flag);

}

 

 

public void someMethod(ValueChangeEvent event) {

         boolean flag = ((Boolean)event.getNewValue()).booleanValue();

Ø  Firefox和IE对事件的响应不一样

•    当组合框的选项改变、单选框被选中或复选框被check/uncheck时,Firefox、Netscape和Opera fire触发onchange事件

•    IE需在选项发生变化且其他GUI控件获得聚焦时触发事件

 

n  ActionListener隶属于按钮控件

Ø  当点击按钮时会自动提交表单

n  ValueChangeListener隶属于组合框、列表框、单选框、复选框、文本框等

Ø  不会自动提交表单

Ø  需要添加οnclick=”submit()”或οnchange=”submit()”JavaScript代码才能提交表单

 

n  一些按钮提交表单并在后端进行业务处理,用的是 Action Controller而并非 ActionListener

Ø  用<h:commandButton action="..." .../>

n  倘若另一些按钮只影响UI,此时,应该用ActionListener

Ø  用<h:commandButton actionListener="..." .../>

Ø  你通常希望这个处理发生在beans的form数据被加载之前,特别是在验证控件进行验证前

•    因为通常情况下,当UI被调整时,表单的信息并不完整

Ø  用”immediate”可明确指定这个listener在bean的form数据被加载前或触发验证前调用

Ø  ActionController主要用于处理表单

•    ActionController被调用之前,form的数据会被填充在ManagedBean中

•    ActionController调用之前,还会完成验证逻辑的调用(请看后面章节)

•    返回字符串(导航条件),直接影响页面导航

Ø  事件监听器处理UI事件

•    通常在form数据被填充给ManagedBean之前调用

•    通常会绕过验证逻辑

•    从不直接影响页面导航

 

 

n  ActionListener

Ø  在点击按钮、图形映射和附带JavaScript的超链接时调用

Ø  自动提交对应的表单

 

 

n  ValueChangeListener

Ø  在点击组合框、复选框、单选框、文本框等控件时调用

Ø  不会自动提交对应的表单

 

Ø  Action Controller:在后端程序处理的事件(通常这类事件会涉及业务逻辑)

Ø  ActionListener与ValueChangeListener:会对用户界面(UI)产生影响的事件

Ø  JSF将上述事件的处理方法划分为ActionController(行为控制器)和事件监听器(ActionListener和ValueChangeListener )

 

消息

n  简单消息

n  参数化消息

n  国际化消息

n  在WEB-INF/classes下创建一个.properties文件

n  值包含{0}, {1}, {2},等

n  例如,someName=blah {0} blah {1}

n  注意:在Myfaces中赋值不能使用单引号

n  使用f:loadBundle标签装载属性文件

n  basename 指定了该文件名

n  使用var指定引用该文件的变量名

n  输出消息使用h:outputFormat标签

n  value指定了base message名称

n  其中的f:param标签指定了子属性名称

n  例如:

n  h:outputFormat value="#{msgs.someName}">

n     <f:param value="value for 0th entry"/>

n     <f:param value="value for 1st entry"/>

n  </h:outputFormat>

同一路径命令行中使用转换编码命令:

n  native2ascii –encoding utf8 messages2_zh_CN.properties messages2_zh_CN.properties

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值