注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

阿弥陀佛

街树飘影未见尘 潭月潜水了无声 般若观照心空静...

 
 
 

日志

 
 
关于我

一直从事气象预报、服务建模实践应用。 注重气象物理场、实况场、地理信息、本体知识库、分布式气象内容管理系统建立。 对Barnes客观分析, 小波,计算神经网络、信任传播、贝叶斯推理、专家系统、网络本体语言有一定体会。 一直使用Java、Delphi、Prolog、SQL编程。

网易考拉推荐

JSF表达式语言EL(Expression Language)  

2012-02-12 20:40:51|  分类: JavaServer Faces |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

JavaServer Faces 2.0, the Complete Reference (Book)  Burns Ed
JSF1.2中EL定界符为 #{} 。 以 #{ 开始的表达式为运行时求值,是延迟求值;${ 开始的表达式为编译时求值,是立即求值,在JSP中使用。
1. 值输出和输入---对应托管Bean的输出和输入
<h:inputText value="#{userBean.firstName}"/>
<h:outputText value="#{userBean.firstName}"/>
对List
...
<value>#{moreSports[0]}</value>
<value>#{moreSports[1]}</value>
<value>#{moreSports[2]}</value>
对Map:
<h:outputText value="#{param['userId']}"/> 或者 <h:outputText value="#{param.userId}"/>
嵌套:
<h:outputText value="#{param[cookie.currentUser]}"/>
2.EL flash
flash用于闪存。使得页面其它地点使用相同变量值,不必向服务器发出请求。
下面是一个“主/从结构”作为其应用示范:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<h:head>
     <title>A Simple JavaServer Faces 2.0 View</title>
</h:head>
<h:body>
<h:form>
    <h1>Master</h1> <!--主表 -->
    <p><h:selectOneMenu value="#{flash.serviceLevel}"> <!-- falsh中服务等级作为键值存储 -->
    <f:selectItems value="#{model.keys}"/>
    </h:selectOneMenu>
    <h:commandButton value="Show Subscribers" /></p>
</h:form>
<h:panelGroup rendered="#{! empty flash.serviceLevel}"> <!-- falsh内存中的键值不为空则 -->
      <h1>Detail</h1>   <!--从表 -->
      <p>Users with Service Level: "#{flash.serviceLevel}":</p>
      <h:dataTable border="1" var="user"  value="#{model.data[flash.serviceLevel]}">
            <h:column>
                <f:facet name="header">First Name</f:facet>#{user.firstName}
            </h:column>
            <h:column>
                 <f:facet name="header">Last Name</f:facet>#{user.lastName}
           </h:column>
            <h:column>
                 <f:facet name="header">Sex</f:facet>#{user.sex}
           </h:column>
      </h:dataTable>
</h:panelGroup>
</h:body>
</html>

package com.jsfcompref;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
@ManagedBean
@SessionScoped
public class Model {
    private Map<String, List<UserBean>> data;
    public Model() {
        data = new HashMap<String, List<UserBean>>();
        // Populate the model with data in the constructor. Naturally
        // in a real application, the model would be populated some
        // other way
        List<UserBean> users = new ArrayList<UserBean>();
        // users with "Medium" service level
        users.add(makeUser("Bob", "Biceps", "Medium", "M"));
        users.add(makeUser("Frank", "Forearms", "Medium", "M"));
        users.add(makeUser("Sherry", "Shins", "Medium", "F"));
        users.add(makeUser("Alice", "Abs", "Medium", "F"));
        data.put(users.get(0).getServiceLevel(), users);
        users = new ArrayList<UserBean>();
        // users with "Basic" service level
        users.add(makeUser("Pete", "Pectorals", "Basic", "M"));
        users.add(makeUser("Neil", "Neck", "Basic", "M"));
        users.add(makeUser("Ellen", "Elbows", "Basic", "F"));
        users.add(makeUser("Tina", "Tummy", "Basic", "F"));
        data.put(users.get(0).getServiceLevel(), users);
        users = new ArrayList<UserBean>();
        // users with "Premium" service level
        users.add(makeUser("Bernd", "Beine", "Premium", "M"));
        users.add(makeUser("Rolf", "Rückenschmerz", "Premium", "M"));
        users.add(makeUser("Bettina", "Bauch", "Premium", "F"));
        users.add(makeUser("Frauke", " Fu?kn?chel", "Premium", "F"));
        data.put(users.get(0).getServiceLevel(), users);
    }
    public Set<String> getKeys() {
        return data.keySet();
    }
    private UserBean makeUser(String firstName, String lastName,String serviceLevel, String sex) {
        UserBean result = new UserBean();
        result.setFirstName(firstName);
        result.setLastName(lastName);
        result.setServiceLevel(serviceLevel);
        result.setSex(sex);
        return result;
    }
    public Map<String,List<UserBean>> getData() {
        return data;
    }
}
JSF表达式语言EL(Expression Language) - 险峰 - 阿弥陀佛
<h:outputText rendered=" #{userBean.serviceLevel == 'Premium'}"
value ="Congratulations, Premium members receive a
#{Discounts.basicDiscount * 10}% discount!" />

 3.EL 操作符


JSF表达式语言EL(Expression Language) - 险峰 - 阿弥陀佛
如摄氏度 2 华氏度:
<h:outputText value="Temperature for #{cityRegistry.city.name} is:
Fahrenheit: #{cityRegistry.city.fahrenheitTemp} Celsius:
#{(cityRegistry.city.fahrenheitTemp - 32) * 5 / 9}">

3.EL 方法表达式
EL中可以调用托管Bean中公共非静态方法。
<h:commandButton value="Confirm" action="#{userBean.addConfirmedUser}" />
有两种情形需要使用EL方法表达式。
JSF表达式语言EL(Expression Language) - 险峰 - 阿弥陀佛
有下列标签事件响应方法调用:
JSF表达式语言EL(Expression Language) - 险峰 - 阿弥陀佛
 
 4.EL 带参数的方法表达式
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
         xmlns:h="http://java.sun.com/jsf/html"
         xmlns:f="http://java.sun.com/jsf/core">
<h:head>
         <title>A Simple JavaServer Faces 2.0 View</title>
</h:head>
<h:body>
         <h:form>
             <p>
             <h:link outcome="page02" value="Link with query parameters">
                 <f:param name="word1" value="hello" />
                 <f:param name="word2" value="dolly" />
             </h:link>
             </p>
         </h:form>
</h:body>
</html>
当用户点击在http://localhost:8080/methodInvocation/faces/page02.xhtml?word1=hello&word2=dolly时,page02.xhtml调用方法并显示输出,
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
         xmlns:h="http://java.sun.com/jsf/html"
         xmlns:f="http://java.sun.com/jsf/core">
<h:head>
    <title>Show method invocation</title>
</h:head>
<h:body>
    <h:form>
        <p>
            The text after the colon comes from the invocation of
            a method via the EL: #{model.generateSentance(param.word1, param.word2)}
        </p>
    </h:form>
</h:body>
</html>
 package com.jsfcompref;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
@ManagedBean
@RequestScoped
public class Model {
    public String generateSentance(String word1, String word2) {
        String result = "invalid arguments";
        if (null != word1 && !word1.isEmpty() &&
        null != word2 && !word2.isEmpty()) {
            result = "The value of word1 is \"" + word1 +"\" and the value of word2 is \"" + word2 + "\".";
        }
        return result;
    }
}
  评论这张
 
阅读(1195)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017