JavaScript 条件控制语句是指根据条件的真假,来决定程序执行的路径。它是程序设计中最基本的控制结构,也是 JavaScript 语言中最常用的语句之一。
JavaScript 中有三种条件控制语句:if 语句、switch 语句和 ? 语句。
if 语句
if 语句用于根据条件判断执行不同的代码,它具有如下形式:
if (condition) { // 如果 condition 为 true 时执行 statement1; // statement1 为要执行的语句 statement2; // statement2 为要执行的语句 ... } else { // 如果 condition 为 false 时执行 statement3; // statement3 为要执行的语句 statement4; // statement4 为要执行的语句 ... }
在 if 语句中,condition 是一个布尔值或者一个返回布尔值的表达式;statement1 和 statement2 是在 condition 结果为 true 时要执行的代码;statement3 和 statement4 是在 condition 结果为 false 时要执行的代码。如果 else 部分不存在(即 else 部分省略了),那么当 condition 结果为 false 时将不会执行任何代码。
switch 语句
switch 语句用于根据多种情况选择不同代码运行;它具有如下形式:
switch (expression) { // expression 会返回一个数值或者字符 case value1: // 当 expression 的值符合 value1时 statements1; // statements1 会被执行 break; // break 用于退出 switch 语句 case value2: // 当 expression 的值符合 value2时 statements2; // statements2 会被执行 break; // break 用于退出 switch 语句 default: // 当 expression 的值都不匹配时 statements_def; // statements_def 会被执行 }
? 语法
"?"语法是 JavaScript 1.2 加入的新特性。它具有如下形式:
(condition) ? expression1 : expression2 ;
"?"语法相当于 if-else 语法。如果 condition 结果是 true (即非零数字、非 null、非 undefined、非 NaN、非 "" ) ;expression1 将会被运行。如果 condition 结果是 false (即零数字、null、undefined、NaN、"" ) ;expression2 将会被运行。"?"语法适用于快速写出一条条件控制说明。例如 var max = (a > b) ? a : b ;
使用托管bean,我们可以基于条件控制导航。
例如,以下代码显示如何为不同的pageId值返回不同的页面名称。
@ManagedBean(name = "navigationController", eager = true) @RequestScoped public class NavigationController implements Serializable { //read value from request parameter pageId @ManagedProperty(value="#{param.pageId}") private String pageId; //if pageId is 1 show page1.xhtml, //if pageId is 2 show page2.xhtml //else show default.xhtml public String showPage(){ if(pageId == null){ return "default"; } if(pageId.equals("1")){ return "page1"; }else if(pageId.equals("2")){ return "page2"; }else{ return "default"; } } }
在JSF UI组件中将pageId作为请求参数。
<h:form> <h:commandLink action="#{navigationController.showPage}" value="Page1"> <f:param name="pageId" value="1" /> </h:commandLink> <h:commandLink action="#{navigationController.showPage}" value="Page2"> <f:param name="pageId" value="2" /> </h:commandLink> <h:commandLink action="#{navigationController.showPage}" value="Home"> <f:param name="pageId" value="3" /> </h:commandLink> </h:form>
这里点击“Page1"按钮
JSF将创建一个参数为pageId = 1的请求。然后,JSF将这个参数传递给navigationController的managed属性pageId。
之后, navigationController.showPage()被调用,将检查pageId后返回view作为page1 。
JSF然后将视图名称 page1 解析为 page1.xhtml 扩展名,并在当前目录中找到相应的视图文件 page1.xhtml 。
以下代码来自register.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> <h2>This is resgister.xhtml</h2> </h:body> </html>
以下代码来自ordermore.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> <h2>This is ordermore.xhtml</h2> </h:body> </html>
以下代码来自start.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> <h2>This is start.xhtml</h2> <h:form> <h:commandButton action="payment" value="Payment" /> </h:form> </h:body> </html>
下面的代码来自UserBean.java。
package cn..common; import javax.faces.bean.ManagedBean; import javax.faces.bean.SessionScoped; import java.io.Serializable; @ManagedBean @SessionScoped public class UserBean implements Serializable { private static final long serialVersionUID = 1L; public boolean registerCompleted = true; public int orderQty = 99; public int getOrderQty() { return orderQty; } public void setOrderQty(int orderQty) { this.orderQty = orderQty; } public boolean isRegisterCompleted() { return registerCompleted; } public void setRegisterCompleted(boolean registerCompleted) { this.registerCompleted = registerCompleted; } }
以下代码来自payment.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> <h2>This is payment.xhtml</h2> </h:body> </html>下载 Conditional-Navigation.zip
将生成的WAR文件从目标文件夹复制到Tomcat部署文件夹,并运行Tomcat-Install-folder/bin/startup.bat。
Tomcat完成启动后,在浏览器地址栏中键入以下URL。
http://localhost:8080/simple-webapp/start.xhtml
JPA教程 -JPA列定义示例当将Java bean映射到实体时,我们可以在映射注释中设置数据库表列定义。以下代码将列定义设置为 VARCHA...
Java教程 - 什么是Java泛型限制类型参数不能实例化不能创建类型参数的实例。例如,考虑这个类:// Cant create an instance of T....
JPA教程 -JPA列长度示例使用JPA,我们可以设置字段的列长度。例如,当将字符串字段映射到VARCHAR时,我们可以在@Column 注释中设...
JPA教程 -JPA日期映射到时间示例我们可以将Java Date类型值映射到数据库中的TIME类型列。@Temporal(TemporalType.TIME)private j...
JPA教程 -JPA删除关系级联示例以下代码显示如何删除具有级联操作的相关实体。例子下面的代码来自PersonDaoImpl.java。package cn...