>
</navigation-rule>
清单 4 表明如果用户从清单切换到 addNew (#{CDManagerBean.addNew}) 操作,并且 addNew 操作成功返回,那就会切换到 cdForm.jsp 页面。
怀疑论者的JSF: JSF应用程序的生命周期(6)
时间:2011-04-11 IBM Rick Hightower
设置 cdForm 和 panelGrid
cdForm.jsp 是包含 CD 表单的表单。其中具有 ID、Title、Artist、Price、Category 和 Subcategory 的域。这些域被放到一个名为 panelGrid 的容器中。JSF 组件,例如 AWT 组件,具有一些容器和组件。容器 是一个包含其他组件的组件。这是一个 混合设计模式 的 例子。panelGrid 有 3 列。每个域都各在一行中,还会有一个标签和消息用于显示该域的错 误消息。cdForm 和 panelGrid 是在清单 5 中定义的。
清单 5. 定义 cdForm 和 panelGrid
<f:view>
<h2>CD Form</h2>
<h:form id="cdForm">
<h:inputHidden id="cdid" value="#{CDManagerBean.cd.id}"/>
<h:panelGrid columns="3" rowClasses="row1, row2">
<h:outputLabel for="title" styleClass="label">
<h:outputText value="Title"/>
</h:outputLabel>
<h:inputText id="title" value="#{CDManagerBean.cd.title}" required="true"/>
<h:message for="title" styleClass="errorText"/>
<h:outputLabel for="artist" styleClass="label">
<h:outputText value="Artist"/>
</h:outputLabel>
<h:inputText id="artist" value="#{CDManagerBean.cd.artist}" required="true"/>
<h:message for="artist" styleClass="errorText"/>
<h:outputLabel for="price" styleClass="label">
<h:outputText value="Price"/>
</h:outputLabel>
<h:inputText id="price" value="#{CDManagerBean.cd.price}" required="true"/>
<h:message for="price" styleClass="errorText"/>
<h:outputLabel for="category" styleClass="label">
<h:outputText value="Category"/>
</h:outputLabel>
<h:selectOneRadio id="category" value="#{CDManagerBean.cd.category}" immediate="true"
onclick="submit()"
valueChangeListener="#{CDManagerBean.categorySelected}">
<f:selectItems value="#{CDManagerBean.categories}"/>
</h:selectOneRadio>
<h:message for="category" styleClass="errorText"/>
<h:outputLabel for="subcategory" styleClass="label">
<h:outputText value="Subcategory"/>
</h:outputLabel>
<h:selectOneListbox id="subcategory" value="# {CDManagerBean.cd.subCategory}"
binding="#{CDManagerBean.subCategoryL
|