() 方法确保:
打开了 form,让用户可以输入新的联系人 — form.setRendered(true)
关闭了 addNewCommand — addNewCommand.setRendered(false)
将 persistCommand 的标签设置为 Add — persistCommand.setValue("Add")
persist() 方法使用 contactRepository 处理现有联系人的更新和添加新联系人。persist() 方法关 闭 form 并打开 addNewCommand。remove() 方法使用 contactRepository 从系统中删除联系人。
read() 方法将 selectedContact(Contact 类型)复制到 contact。contact(也是 Contact 类型的 )是绑定到 form 的值。您可能想知道 selectedContact 来自哪里。当用户单击联系人列表中的一个联 系人时,会选择一个值。(在后面讨论 JSP 时将讨论它。)与 第 1 部分 中一样,addStatusMessage 添加状态消息,可以用 <h:messages> 显示这些消息。
JSF 1.2入门,第2部分 JSF生命周期、转换、检验和阶段监听器(3)
时间:2011-08-09 IBM Richard Hightower
联系人视图
这个 JSP 页面使用一个 <h:dataTable>(第 1 部分中没有讨论过的一个组件),见清单 2:
清单 2. contacts.jsp
<?xml version="1.0" encoding="ISO-8859-1" ?>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<!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">
<head>
<title>Contacts</title>
<link rel="stylesheet" type="text/css"
href="<%=request.getContextPath()%>/css/main.css" />
</head>
<body>
<f:view>
<h4>Contacts</h4>
<h:messages infoClass="infoClass" errorClass="errorClass"
layout="table" globalOnly="true" />
<h:form>
<h:commandLink binding="#{contactController.addNewCommand}"
action="#{contactController.addNew}" value="Add New..." />
</h:form>
<h:form binding="#{contactController.form}" rendered="false"
styleClass="form">
<h:inputHidden value="#{contactController.contact.id}" />
<h:panelGrid columns="6">
<%-- First Name --%>
<h:outputLabel value="First Name" for="firstName" accesskey="f" />
<h:inputText id="firstName" label="First Name" required="true"
value="#{contactController.contact.firstName}" size="10" />
<h:message for="firstName" errorClass="errorClass" />
<%-- Last Name --%>
<h:outputLabel value="Last Name" for="lastName" accesskey="l" />
<h:inputText id="lastName" required="true"
value="#{contactController.con
|