Java教程 第70页

JSF 参数示例

JSF教程 – JSF参数示例 我们可以使用f:param标签将参数传递给组件或传递请求参数。 以下代码显示如何将参数传递到UI组件。 <h:outputFormat value="Hello {0}!."> <f:param value="World" /> </h:outputFormat> 以下代码传递请求参数及其名称。 <h:commandButton id="submit" value="Show Message" action="#{userData.showResult}"> <f:param name="username" value="JSF 2.0 User" /> </h:commandButton> 标签属性 属性 描述 id 组件的标识符 binding 引用可以在backing bean中使用的组件 name 参数组件的可选名称 value 存储在组件中的值 例子 以下代码来自demo.xhtml。 <?xml version="1.0" encoding="UTF-8"?> <!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:body> <h:form id="form"> Enter your name : <h:inputText size="10" value="#{user.name}" /> <br /><br /> <h:commandButton id="submitButton" value="Submit - US" action="#{user.outcome}"> <f:param name="country" value="United States" /> </h:commandButton> </h:form> </h:body> </html> 以下代码来自result.xhtml。 <?xml version="1.0" encoding="UTF-8"?> <!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:body> <h3> <h:outputFormat value="Hello,{0}. You are from {1}."> <f:param value="#{user.name}" /> <f:param value="#{user.country}" /> </h:outputFormat> </h3> </h:body> </html> 下面的代码来自UserBean.java。 package...

JSF 属性示例

JSF教程 – JSF属性示例 我们可以使用h:attribute标签将属性值传递给组件,或者通过动作侦听器将参数传递给组件。 以下代码显示如何使用h:attribute标签。 <h:commandButton id="submit" actionListener="#{userData.attributeListener}" action="result"> <f:attribute name="value" value="Show Message" /> <f:attribute name="username" value="JSF 2.0 User" /> </h:commandButton> 标签属性 属性 描述 name 要设置的属性的名称 value 属性的值 例子 下面的代码来自UserBean.java。 package cn.w3cschool.common; import javax.faces.bean.ManagedBean; import javax.faces.bean.SessionScoped; import javax.faces.event.ActionEvent; @ManagedBean(name="user") @SessionScoped public class UserBean{ public String nickname; public void attrListener(ActionEvent event){ nickname = (String)event.getComponent().getAttributes().get("username"); } public String outcome(){ return "result"; } public String getNickname() { return nickname; } public void setNickname(String nickname) { this.nickname = nickname; } } 以下代码来自demo.xhtml。 <?xml version="1.0" encoding="UTF-8"?> <!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:body> <h:form id="form"> <h:commandButton action="#{user.outcome}" actionListener="#{user.attrListener}"> <f:attribute name="username" value="www.w3cschool.cn" /> <f:attribute name="value" value="Click Me" /> </h:commandButton> </h:form> </h:body> </html> 以下代码来自result.xhtml。 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD...

JSF setPropertyActionListener示例

JSF教程 – JSF setPropertyActionListener示例 h:setPropertyActionListener标记将一个操作监听器添加到将bean属性设置为给定值的组件。 以下代码显示如何使用 f:setPropertyActionListener 。 <h:commandButton id="submit" action="result" value="Show Message"> <f:setPropertyActionListener target="#{userData.data}" value="JSF 2.0 User" /> </h:commandButton> 例子 下面的代码来自UserBean.java。 package cn.w3cschool.common; import javax.faces.bean.ManagedBean; import javax.faces.bean.SessionScoped; @ManagedBean(name="user") @SessionScoped public class UserBean{ public String username; public String outcome(){ return "result"; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } } 以下代码来自result.xhtml。 <?xml version="1.0" encoding="UTF-8"?> <!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" > <h:body> <h1>JSF 2 setPropertyActionListener example</h1> #{user.username} </h:body> </html> 以下代码来自demo.xhtml。 <?xml version="1.0" encoding="UTF-8"?> <!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:body> <h:form id="form"> <h:commandButton action="#{user.outcome}" value="Click Me"> <f:setPropertyActionListener target="#{user.username}" value="w3cschool" /> </h:commandButton> </h:form> </h:body> </html> 下载 setPropertyActionListener.zip 运行 将生成的WAR文件从目标文件夹复制到Tomcat部署文件夹,并运行Tomcat-Install-folder/bin/startup.bat。 Tomcat完成启动后,在浏览器地址栏中键入以下URL。...

JSF 列表框多选

JSF教程 – JSF 列表框多选 以下代码显示了如何创建多个可选择选择框。 h:selectManyListbox标记渲染HTML输入元素的类型“select”与大小和多个指定。 下面的JSF代码 <h:selectManyListbox value="#{userData.data}"> <f:selectItem itemValue="1" itemLabel="Item 1" /> <f:selectItem itemValue="2" itemLabel="Item 2" /> </h:selectOneListbox> 被渲染成以下HTML代码。 <select name="j_idt6:j_idt8" size="2" multiple="multiple"> <option value="1">Item 1</option> <option value="2">Item 2</option> </select> 标签属性 属性 描述 id 标签的标识 binding 引用在backing bean中使用的组件 rendered 布尔值; false将抑制渲染 styleClass 级联样式表(CSS)类名称 value 值绑定 valueChangeListener 响应值更改的方法绑定 converter 转换器类名 validator 附加到组件的验证器的类名 required 布尔值; 如果为true,则根据需要标记标签 accesskey 给予一个元素的焦点 accept 表单的内容类型的逗号分隔列表 accept-charset 表单的字符编码的逗号或空格分隔列表。 alt 非文字元素(例如图片)的替代文字 border 元素的边框宽度的像素值 charset 链接资源的字符编码 coords 形状为矩形,圆形或多边形的元素的坐标 dir 文本的方向。 有效值为 ltr (从左到右)和 rtl (从右到左)。 disabled 输入元素或按钮的禁用状态 hreflang 使用 href 属性指定的资源的基本语言; lang 元素的属性和文本的基本语言 maxlength 文本字段的最大字符数 readonly 输入字段的只读状态 style 内联样式信息 tabindex 指定制表符索引的数值 target 打开文档的框架的名称 title 用于辅助功能的标题。 浏览器通常为标题的值创建工具提示 type 链接类型; 例如样式表 width 元素的宽度 onblur 失去焦点的事件处理程序 onchange 值更改的事件处理程序 onclick 鼠标按钮的事件处理程序点击该元素 ondblclick 双击鼠标按钮的事件处理程序 onfocus 元素接收焦点的事件处理程序 onkeydown 按键的事件处理程序 onkeypress 键按下并释放的事件处理程序 onkeyup Key的事件处理程序发布 onmousedown...

Java Set集合-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

Java Set集合

Java集合教程 – Java Set集合 Set 表示唯一对象的集合。集合中元素的排序是不相关的。 集合框架提供三种类型的集合: 数学集 排序集 导航集 数学集 Set 接口对数学中的一组进行建模。集合是唯一元素的集合。 Java最多允许一个Set中的一个空元素。 Set 中元素的排序并不重要。 Java不保证 Set 中元素的排序。 当循环遍历 Set 的所有元素时,你得到 Set 中的每个元素一次。 集合框架提供 HashSet 类作为实现为设置接口。 以下代码显示了如何创建一个Set并向其添加元素。 当向集合添加重复元素时,它们将被忽略。 如果比较它们,则在集合中的两个元素被认为是相等的使用 equals()方法返回true。 import java.util.HashSet; import java.util.Set; public class Main { public static void main(String[] args) { Set<String> s1 = new HashSet<>(); // Add a few elements s1.add("HTML"); s1.add("CSS"); s1.add("XML"); s1.add("XML"); // Duplicate // Create another set by copying s1 Set<String> s2 = new HashSet<>(s1); // Add a few more elements s2.add("Java"); s2.add("SQL"); s2.add(null); // one null is fine s2.add(null); // Duplicate System.out.println("s1: " + s1); System.out.println("s1.size(): " + s1.size()); System.out.println("s2: " + s2); System.out.println("s2.size(): " + s2.size()); } } 上面的代码生成以下结果。 LinkedHashSet 集合框架提供 LinkedHashSet 类作为 Set 接口的另一个实现类。 HashSet 不保证顺序元素。 LinkedHashSet 在插入元素时保持元素顺序。 import...

Java 特殊队列-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

Java 特殊队列

Java集合教程 – Java特殊队列 阻塞队列 阻塞队列通过添加两组方法来扩展队列: 一组方法无限期地阻塞 另一组方法允许您指定要阻止的时间段。 BlockingQueue 接口的实例表示阻塞队列。 BlockingQueue 接口继承自 Queue 接口。 put()和 offer()方法在阻塞队列的尾部添加一个元素。如果阻塞队列已满,则put()方法将无限期阻塞,直到队列中的空间可用。offer()方法允许您指定等待空间可用的时间段。 如果指定的元素添加成功,则返回true; 否则为假。 take()和poll()方法检索和删除阻塞队列的头。如果阻塞队列为空,take()方法将无限期阻塞。poll()方法允许您指定在阻塞队列为空时要等待的时间段; 如果在元素可用之前过去了指定的时间,则返回null。 来自 BlockingQueue 中 Queue 接口的方法就像使用 Queue 。 BlockingQueue 被设计为线程安全的并且可以使用在生产者/消费者的情况下。 阻塞队列不允许空元素和可以是有界的或无界的。 BlockingQueue 中的 remainingCapacity()返回可以添加到阻止队列中而不阻塞的元素数。 BlockingQueue 可以控制多个线程被阻塞时的公平性。 如果阻塞队列是公平的,它可以选择最长的等待线程来执行操作。如果阻塞队列不公平,则不指定选择的顺序。 BlockingQueue 接口及其所有实现类都在 java.util.concurrent 包中。 以下是 BlockingQueue 接口的实现类: 由数组支持的 ArrayBlockingQueue 是 BlockingQueue 的有界实现类。 我们可以在其构造函数中指定阻塞队列的公平性。 默认情况下,它不公平。 LinkedBlockingQueue 可以用作有界或无界阻塞队列。 它不允许为阻塞队列指定公平规则。 PriorityBlockingQueue 是 BlockingQueue 的无界实现类。 它的工作方式与 PriortyQueue 相同,用于排序阻塞队列中的元素,并将阻塞特性添加到 PriorityQueue 中。 SynchronousQueue 实现 BlockingQueue ,没有任何容量。 put操作等待take操作以获取元素。 它可以在两个线程之间进行握手,并在两个线程之间交换对象。 它的isEmpty()方法总是返回true。 DelayQueue是BlockingQueue的无界实现类。它保持一个元素,直到该元素经过指定的延迟。 如果有超过一个元素的延迟已经过去,那么其延迟最早传递的元素将被放置在队列的头部。 例子 以下代码显示了如何在生产者/消费者应用程序中使用阻塞队列。 import java.util.UUID; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; class BQProducer extends Thread { private final BlockingQueue<String> queue; private final String name; public BQProducer(BlockingQueue<String> queue, String name) { this.queue = queue; this.name = name; } @Override public void run() { while (true) { try { this.queue.put(UUID.randomUUID().toString()); Thread.sleep(4000); } catch (InterruptedException e)...

Java 双端队列-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

Java 双端队列

Java集合教程 – Java双端队列 双端队列或deque扩展队列以允许元件从两端插入和移除。 Deque 类的实例表示双端队列。 Deque 接口扩展了 Queue 接口。 它声明了方便所有操作的其他方法对于头部以及尾部的队列。它可以用作FIFO队列或LIFO队列。 ArrayDeque和LinkedList类是Deque接口的两个实现类。 ArrayDeque 类由数组支持,而 LinkedList 类由链表支持。 如果您使用Deque作为堆栈,则应该使用 ArrayDeque 作为 Deque 实现。 如果使用 Deque 作为FIFO队列, LinkedList 以下代码显示如何使用 Deque 作为FIFO队列。 import java.util.Deque; import java.util.LinkedList; public class Main { public static void main(String[] args) { Deque<String> deque = new LinkedList<>(); deque.addLast("Oracle"); deque.offerLast("Java"); deque.offerLast("CSS"); deque.offerLast("XML"); System.out.println("Deque: " + deque); // remove elements from the Deque until it is empty while (deque.peekFirst() != null) { System.out.println("Head Element: " + deque.peekFirst()); deque.removeFirst(); System.out.println("Removed one element from Deque"); System.out.println("Deque: " + deque); } // the Deque is empty. Try to call its peekFirst(), // getFirst(), pollFirst() and removeFirst() methods System.out.println("deque.isEmpty(): " + deque.isEmpty()); System.out.println("deque.peekFirst(): " + deque.peekFirst()); System.out.println("deque.pollFirst(): " + deque.pollFirst()); String str = deque.getFirst(); System.out.println("deque.getFirst(): "...

Java 特殊类型映射-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

Java 特殊类型映射

Java集合教程 – Java特殊类型映射 已排序的映射 分类映射按顺序保存映射条目。 它基于键对映射条目进行排序从代码中的 Comparable 接口a Comparator 对象。 如果键实现 Comparable 接口并且您使用 Comparator 对象, Comparator 对象会做排序。 SortedMap 接口继承了Map接口表示排序的映射。 Comparator comparator()返回用于在SortedMap中进行自定义排序的 Comparator 对象。 K firstKey()返回SortedMap中第一个条目的键。如果SortedMap为空,它会抛出一个 NoSuchElementException 。 SortedMap headMap(K toKey)返回其条目的SortedMap的视图将具有小于指定的toKey的键。视图由原始SortedMap支持。 K lastKey()返回SortedMap中最后一个条目的键。如果SortedMap为空,它会抛出一个NoSuchElementException异常。 SortedMap subMap(K fromKey,K toKey)返回SortedMap的视图其条目将具有从指定的键fromKey(包含)和toKey(exclusive)。 SortedMap tailMap(K fromKey)返回其条目的SortedMap的视图将具有等于或大于指定的fromKey的密钥。 TreeMap 类是实现类 SortedMap 界面。下面的代码演示了如何使用 SortedMap 。 import java.util.SortedMap; import java.util.TreeMap; public class Main { public static void main(String[] args) { SortedMap<String, String> sMap = new TreeMap<>(); sMap.put("CSS", "style"); sMap.put("HTML", "mark up"); sMap.put("Oracle", "database"); sMap.put("XML", "data"); SortedMap<String, String> subMap = sMap.subMap("CSS", "XML"); System.out.println(subMap); // Get the first and last keys String firstKey = sMap.firstKey(); String lastKey = sMap.lastKey(); System.out.println("First Key: " + firstKey); System.out.println("Last key: " + lastKey); } } 上面的代码生成以下结果。 SortedMap与Comparator 要使用 Comparator 对象对 SortedMap 中的条目进行排序,使用 TreeMap 类的构造函数以 Comparator 作为参数。 以下代码显示了如何对基于排序映射的条目进行排序在他们的钥匙的长度随后按字母顺序键忽略情况:...

Java 映射-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

Java 映射

Java集合教程 – Java映射 映射表示包含的集合键值映射。 Map是一个集合,其中每个元素表示一个键值对作为<key,value> ;.<key,value> 对也称为映射中的条目。键和值必须是引用类型。 映射由 Map<K,V> 接口的实例表示,它不是继承自 Collection 接口。 映射不允许任何重复的键。每个键映射到正好一个值。值不必是唯一的。 两个键可以映射到相同的值。 Map 允许最多一个空值键和多个空值作为其值。 Map接口中的方法可以根据其执行的操作分为以下四类: 基本操作 批量操作 查看操作 比较操作 基本操作 基本方法在Map上执行基本操作, 将一个条目放入映射 获取指定键的值 获取条目的数量 删除条目 检查Map是否为空。 本类别中的方法示例如下: int size() boolean isEmpty() boolean containsKey (Object key) boolean containsValue (Object value) V get(Object key) V getOrDefault(Object key, V defaultValue) V put(K key, V value) V putIfAbsent(K key, V value) V remove (Object key) boolean remove(Object key, Object value) boolean replace(K key, V oldValue, V newValue) 批量操作 映射批量操作在映射上执行批量操作,例如将条目复制到另一个Map或从映射中删除所有条目。 本类别中的方法示例如下: void clear() void putAll (Map<? extends K, ? extends V> t) void replaceAll(BiFunction<? super K,? super V,? extends V> function) 查看操作 视图操作包含三种方法。我们可以从映射中查看以下集合。 所有键在一个Map中作为一个Set, 所有的值作为Collection, 所有<key,value>对作为Set。 本类别中的方法示例如下: Set<K> keySet() Collection<V> values() Set<Map. Entry<K, V>>entrySet() 所有键和所有< key,value> 对在映射中始终是唯一的并作为设置视图返回。 由于映射可能包含重复值,它返回一个 Collection 视图的值。 比较操作 比较操作方法处理比较两个图的相等性。本类别中的方法示例如下: boolean...

Java 优先级队列-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

Java 优先级队列

Java集合教程 – Java优先级队列 优先级队列是其中每个元素具有相关联的优先级的队列。具有最高优先级的元素将从队列中删除。 PriorityQueue 是一个实现类对于Java Collection Framework中的无界优先级队列。 我们可以使用在每个元素中实现的 Comparable 接口作为其优先事项。 或者我们可以提供一个 Comparator 对象,这将确定元素的优先级顺序。 当向优先级队列添加新元素时,它将根据其优先级位于队列中。 PriorityQueue APIs 例子 import java.util.PriorityQueue; import java.util.Queue; class ComparablePerson implements Comparable<ComparablePerson> { private int id; private String name; public ComparablePerson(int id, String name) { this.id = id; this.name = name; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public boolean equals(Object o) { if (!(o instanceof ComparablePerson)) { return false; } ComparablePerson p = (ComparablePerson) o; if (this.id == p.getId()) { return true; } return false; } @Override public int hashCode() { return this.id; } @Override public String toString()...