所谓动态页面就是指页面上的字段是不固定的,比如常见的动态参数,根据不同的情况同一个页面会显示不同的字段。
一般来说是将动态参数以key value的形式存储在数据库中,动态参数由两部分组成,1)动态参数定义,即指定情况下应该有哪些参数,2)动态参数值存储,即将用户输入的value与key对应起来存储和显示。
动态参数定义需要code,name,可选择列表
public class ReportParameterDefinition
private String code;
private String name;//用来显示
//Eg: 1;Int., 2;Dom, 3;Both
private String optionItems;
动态参数值
public class ReportParameter
private String code;//与ReportParameterDefinition的code对应
private String value;//用户输入的值
页面上通过 c标签来动态生成jsf标签。
c标签本质上不是jsf标签,他不会生成对应的jsf组件,但他可以用来控制jsf组件的生成,c:forEach里面的jsf组件相当于直接在页面上写了多遍jsf组件,不同于ui:Repeat,ui:Repeat本身是jsf组件,他里面的其他jsf组件只有一份,不会根据循环的遍数生成多个jsf组件。
c标签被faceslet重新定义,用来动态生成jsf组件,每次请求的第6阶段会首先执行c标签来更新jsf组件树中的组件
<c:if
test="#{report.globalReport.reportDefinition.parameterDefinitions !=null}">
<c:forEach
items="#{report.globalReport.reportDefinition.parameterDefinitions}"
var="row1">
<h:panelGroup>
<h:outputText value="#{row1.name}" />
</h:panelGroup>
<h:panelGroup>
<c:if test="#{!row1.options}">
<h:inputText value="#{report.reportParameterMap[row1.code].valueName}"
label="#{row1.name}" required="true">
<a4j:support event="onblur" ajaxSingle="true"
reRender="param_#{row1.code}_Decorate" />
</h:inputText>
</c:if>
<c:if test="#{row1.options}">
<rich:comboBox
value="#{report.reportParameterMap[row1.code].value}"
label="#{row1.name}" enableManualInput="false" required="true">
<c:forEach items="#{row1.optionItems}" var="row2">
<f:selectItem itemLabel="#{row2.key}" itemValue="#{row2.value}" />
</c:forEach>
</rich:comboBox>
</c:if>
</h:panelGroup>
</c:forEach>
</c:if>
分享到:
相关推荐
在JSF中,动态创建表单控件是一项强大的功能,它允许开发者在运行时根据需求生成不同的用户输入元素,提高了代码的灵活性和可扩展性。下面我们将详细探讨JSF动态创建表单控件的概念、实现方法以及相关的实例。 1. *...
### 使用JSF页面动态创建表格 #### 背景与目的 在开发Web应用程序时,经常需要根据不同的数据集或用户操作动态生成表格。JavaServer Faces(简称JSF)是一种用于构建服务器端Java应用程序的标准技术,它允许开发者...
在JavaServer Faces (JSF) 框架中,动态数据处理是常见的需求,尤其是在构建复杂的Web应用程序时。本文将详细讲解如何通过JSF来实现一个动态的三级级联下拉框,这在多层级关联的数据展示中非常有用,比如地区、城市...
1. **CSS(层叠样式表)**:CSS是网页设计的关键组成部分,它定义了页面的布局和视觉样式。在动态JSF表单中,CSS用于美化和组织用户界面,使表单看起来更加专业且用户友好。通过选择器、类和ID,我们可以精确地控制...
JSP(Java Server Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag)...
2. **配置页面**:在JSF页面中,导入分页组件库,如`<h:head><meta name="myfaces.extensions.paginator" content="true"/></h:head>`。 3. **使用分页组件**:在数据表格下方添加`<p:paginator/>`,并根据需求设置...
3. **动态生成组件**:在JSF页面(通常是`.xhtml`文件)中,我们可以在JSF EL中使用`c:forEach`或`ui:repeat`等迭代标签,遍历Managed Bean中的按钮数据,为每个元素动态生成一个`h:commandButton`组件。每个按钮的...
**Ajax** 支持也常常在JSF中用于创建更动态的用户体验。例如,使用`p:ajax` 或 `f:ajax` 标签,我们可以实现购物车内容的异步更新,而无需刷新整个页面。 最后,`ch6_editanddelete` 文件名暗示了购物车应用可能...
JSF提供了组件库,使得创建动态、交互式的网页变得简单。 在“jsf第一个例子”中,我们通常会遇到以下关键概念: 1. **JSF生命周期**:JSF有六个主要阶段,包括恢复视图、应用请求值、处理验证、更新模型值、调用...
综上所述,这个学习资源涵盖了通过CSS美化JSF页面,利用JavaScript和JSF的Ajax功能实现动态交互的关键技术。通过深入理解和实践这些知识点,开发者可以创建出更吸引人、更高效的Web应用程序,提升用户的在线体验。
书中会介绍如何创建一个简单的JSF应用程序,设置开发环境,以及如何使用JSF的UI组件来构建动态网页。此外,还会讲解EL(Expression Language)和 Managed Beans,这两个是JSF中用于数据绑定和业务逻辑处理的关键技术...
这篇博客文章(虽然链接不可用)可能探讨了如何使用JSF来创建和管理Web页面。JSF是一个组件化的MVC(模型-视图-控制器)框架,允许开发者通过拖放组件的方式构建页面,并通过后端Java代码处理业务逻辑。 1. **JSF...
JSF是一种用于构建Java ... 包含JSP页面的JSF应用程序也使用由为了表现UI组件和在页面上的其他对象的JSF技术而定义的标准的tag库。 Java Server Faces技术的重要开发框架 sun-ri、myfaces、icefaces、richfaces、seam
这些组件可以通过属性和绑定来配置,允许开发者在页面上动态地创建和操作用户界面。 **事件处理**:JSF支持事件处理机制,允许组件之间通信。当用户触发一个事件(如点击按钮),对应的事件处理器会被调用,这使得...
JavaServer Faces (JSF) 是一个用于构建用户界面的Java Web框架,它简化了创建和维护Web应用程序的复杂性。JSF的核心理念是提供一种组件化的编程模型,将UI元素与业务逻辑分离,使得开发者可以专注于应用的逻辑部分...
具体集成步骤包括:引入Tiles的依赖库,配置`web.xml`以启用Tiles,编写Tiles的定义文件(如`tiles-defs.xml`),然后在JSF页面中引用Tiles组件。通过这种方式,开发者可以创建可复用的页面片段,并在多个JSF视图...
这些组件可以通过XML(Facelets)或JSP页面进行声明,并且可以组合成更复杂的视图结构。**Facelets** 是JSF推荐的视图定义语言,它比JSP更强大,更易于维护。 **数据绑定** 是JSF的一个关键特性,它将组件的值与...
在JavaServer Faces (JSF)框架中,分页是一种常用的技术,用于处理大量数据时提供更好的用户体验。当数据集过大,一次性加载所有记录到页面上会导致性能下降且用户界面响应变慢。通过分页,我们可以将数据分成多个...
10. **Ajax支持**:JSF 2.0及更高版本引入了Ajax功能,允许部分页面更新,这对于动态操作组件来说尤为重要,因为可以无需刷新整个页面就能改变或添加组件。 通过学习这个"JSF(动态操作组件的例子)",开发者可以深入...
在JSF页面中,可以利用`<h:outputLink>`组件结合JSP页面来实现文件下载。`<h:outputLink>`的`value`属性指向JSP页面,通过传递参数(如`filename`)来指定要下载的文件。JSP页面接收这些参数并调用下载方法。 总之...