<web-app ...
...
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
...
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
...
</web-app>
在Structure 导航器中,右键点击AdForm.jsp 页面的h:form 元素并单击Convert。在Convert Form 对话框中,选择ADF Faces Core 库,选择Form 元素,然后单击OK:

图 34
JDeveloper 将用<af:form> 替换<h:form> 组件。由于这是首次使用 ADF Faces,因此 JDeveloper 将自动用<afh:html>、<afh:head> 和<afh:body> 替换该页面的 HTML 标记。此外,JDeveloper 还将构建adf-faces-config.xml 文件,并在web.xml 文件中配置adfFaces 过滤器和resources servlet:
<web-app ...>
<filter>
<filter-name>adfFaces</filter-name>
<filter-class>
oracle.adf.view.faces.webapp.AdfFacesFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>adfFaces</filter-name>
<servlet-name>Faces Servlet</servlet-name>
</filter-mapping>
...
<servlet>
<servlet-name>resources</servlet-name>
<servlet-class>
oracle.adf.view.faces.webapp.ResourceServlet
</servlet-class>
</servlet>
...
<servlet-mapping>
<servlet-name>resources</servlet-name>
<url-pattern>/adf/*</url-pattern>
</servlet-mapping>
...
</web-app>
返回AdForm.jsp 页面,在Structure 导航器中右键点击af:form 元素。然后,选择Insert inside af:form 并单击JSF HTML:

图 35
在Insert JSF HTML Item 对话框中,选择Panel Grid 并单击OK:

图 36
跳过Create PanelGrid 向导的 Welcome 屏幕,在Number of Columns 域中输入1:

图 37
单击Finish 在AdForm.jsp 页面的<af:form> 元素中插入<h:panelGrid> 组件。在Structure 导航器中,右键点击h:panelGrid 元素,选择Insert inside h:panelGrid 并单击ADF Faces Core:

图 38
在Insert ADF Faces Core Item 对话框中,选择InputText 并单击OK:


图 39
JDeveloper 将在AdForm.jsp 页面的<h:panelGrid> 元素中插入一个<af:inputText> 组件。使用Property Inspector 将标签设置为User Input,将rows 属性设置为4:

图 40
您还可以使用 Component Palette 插入模块。在文本编辑器中,将脱字符光标移到<af:inputText> 元素上面,在Component Palette 中选取ADF Faces Core 库,并单击Input Text 插入第二个文本域。然后,使用Property Inspector 将标签设置为More Input:

图 41
ADF Faces 组件通过以上属性支持个别页面显示 (PPR):autoSubmit、partialTriggers 和partialSubmit。如果期望在其它模块(称作触发器)的输入值设置时升级某个模块,您将使用这种属性。如果某个输入模块的autoSubmit 属性为true,则当该组件的值在浏览器中差异时,将提交包括的字段。必须升级的模块使用partialTriggers 属性指定触发器组件的 ID。
您使用下面看到的属性时,ADF Faces 组件将处理通信,您不必害怕 JavaScript 事件处置程序和 Ajax 回调。然而,有时您需要在浏览器中使用 JavaScript 和XMLHttpRequest API。例如,如果您期望在客户输入时提交表单数据,或者您期望访问例如我们的控制器 servlet 之类的资源,您必须提供自己的 JavaScript 代码。
示例应用程序包含一个名为AdScript.js 的 JavaScript 文件。必须通过在<f:verbatim> 组件中使用一个<script> 元素将该文件导出到页面的头中:
<f:verbatim> <script src="" type="text/javascript"> </script> </f:verbatim>
AdScript.js 文件包含用于读取控制器 servlet 的 JavaScript 代码。用AdResponse.jsp 生成的 Ajax 响应将插入到AdForm.jsp 的<div> 部分中。<div> 元素应该包含在<f:verbatim> 组件中:
<f:verbatim> <div id="ad"> </div> </f:verbatim>
浏览器加载完成后,表单页面必须进行一些初始化。初始化代码包括在AdScript.js 文件的init() 函数中。在Structure 导航器中,选择AdForm.jsp 的afh:body 元素并修改onload 属性:

图 42
JDeveloper 将修改<afh:body> 元素:
<afh:body onload="init()">
以下是AdForm.jsp 页面的完整源代码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<%@ page contentType="text/html;charset=windows-1252"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@ taglib uri="http://xmlns.oracle.com/adf/faces" prefix="af"%>
<%@ taglib uri="http://xmlns.oracle.com/adf/faces/html" prefix="afh"%>
<f:view>
<afh:html>
<afh:head title="Ajax-JSF Page">
<meta http-equiv="Content-Type"
CONTENT="text/html;charset=utf-8"/>
<f:verbatim>
<script src="" type="text/javascript">
</script>
</f:verbatim>
</afh:head>
<afh:body onload="init()">
<af:form>
<h:panelGrid columns="1">
<f:verbatim>
<div id="ad">
</div>
</f:verbatim>
<af:inputText label="User Input" rows="4"/>
<af:inputText label="More Input"/>
</h:panelGrid>
</af:form>
</afh:body>
</afh:html>
</f:view>
以下子部分解释了AdScript.js 文件的代码。
在Applications 导航器中,右键单击ajaxejb 项目的Web Content 文件夹并单击New。在New Gallery 窗口的右侧面板中,展开Web Tier 节点并选取HTML。然后,在该窗口的左侧面板中选取JavaScript File 项并单击OK:

图 43
输入AdScript.js 作为 JSF 页面的名称,并点击 OK:

图 44
JDeveloper 将创建一个空 JavaScript 文件。接下来,您必须添加将调用 Ajax-EJB 控制器的代码。首先,您必须一个用于建立XMLHttpRequest 对象的函数。createRequest() 函数必须三个参数:HTTP 方法、Ajax 控制器的 URL 以及回调函数。XMLHttpRequest 对象使用其open() 方法进行初始化,然后createRequest() 设置onreadystatechange 属性,该属性将包括到XMLHttpRequest 对象经常状态设置时就会读取的回调函数的引用。最后,createRequest() 返回稍后将用于发送 Ajax 请求的对象:
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-121815-3.html
没法形容的讨厌
这是两岸人民的共同心声
很感动
郑秀晶的鼻子