用JDev进行JSF开发的朋友可能都遇到过这样一个问题:原来可以正常使用的所见即所得的jspx/jsp编辑器突然不再工作,显示了一张当前页面的元素树的列表,就象下面的这样:
怎么回事呢?这还得从JDEV 10g对编辑页面的渲染说起。根据我从网上查到的资料来看,JDEV渲染JSF页面时,由于某些原因并不直接解析jsp/jspx页面源码,而是通过一个内置的web环境来动态执行和显示的,即JDEV全读取web.xml、faces-config.xml等配置文件,并根据这些配置文件中的信息来渲染页面内容并显示在编辑器内。
换句话说,导致上述问题的原因是修改了项目的web.xml或faces-config.xml,在里面添加了部分内容,从而导致JDEV无法正常渲染页面。
但有些内容是必须添加的,如进行权限判断的filter。怎么办?在开发过程中把添加的内容屏蔽掉是一个办法,但在程序发布的时候还得恢复。有没有其它的办法呢?当然有!
根据JDEV页面渲染的原理,我们可以在添加的filter、JSF listener等程序中对运行环境进行判断。如果当前是真正的web运行,就正常执行,否则就实现短路。怎么进行运行环境判断呢?参考从网上找到的信息,可以通过HttpServletRequest的getServerPort方法。在真正的web环境中,这个方法返回的值肯定大于0(TCP/IP的端口是从1到65535的),而在模拟环境中这个值应该是-1,即小于0。下面以一个Filter为例子:
java 代码
- import javax.servlet.Filter;
- import javax.servlet.FilterConfig;
- import javax.servlet.ServletException;
- import javax.servlet.ServletRequest;
- import javax.servlet.ServletResponse;
- import javax.servlet.FilterChain;
-
- import java.io.IOException;
-
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpSession;
- import javax.servlet.http.HttpServletResponse;
-
- import org.apache.log4j.Logger;
-
- public class SecurityFilter implements Filter {
-
-
- private Logger logger = Logger.getLogger(this.getClass());
- public void init(FilterConfig filterConfig) throws ServletException {
- logger.info("SecurityFilter initialized");
- }
-
- public void doFilter(ServletRequest request, ServletResponse response,
- FilterChain chain) throws IOException,
- ServletException {
-
-
-
-
-
-
-
-
-
-
-
- if (request.getServerPort() < 0)
- {
- chain.doFilter(request, response);
- return;
- }
-
- HttpServletRequest req = (HttpServletRequest)request;
- HttpServletResponse res = (HttpServletResponse)response;
- HttpSession session = req.getSession(true);
-
- String contextpath = req.getContextPath();
- String http = req.getRequestURI();
- String id = (String)session.getAttribute("loginId");
- if (http.equals(contextpath + "/faces/login.jspx")) {
- chain.doFilter(request, response);
- } else if ((id == null || "".equals(id)) && (http.endsWith(".jspx"))) {
- res.sendRedirect(contextpath + "/faces/login.jspx");
- } else {
- chain.doFilter(request, response);
- }
- }
-
- public void destroy() {
- logger.info("SecurityFilter destroied");
- }
-
- }
-
对于JSF的Listener,根据实际情况的不同,需要将上面的逻辑添加到beforePhase或afterPhase方法中。
另外,如果是因修改web.xml引起,还得注意加入的元素在web.xml中的位置,比如加入了一个新的Filter,那么这个与这个Filter对应的filter-mapping定义应在adfFilter的定义下面。举例如下:
相信通过这个办法能够解决JDEVELOPER 10G在编辑JSP/JSPX页面方面的所见即所得功能缺失的问题。还要说明的是,ORACLE公司JDEVELOPER开发团队已经注意到这个问题,并许诺在下个主要版本即11G中予以解决。
参考:http://www.orablogs.com/fnimphius/archives/001822.html
- 大小: 23.2 KB
- 大小: 63.5 KB
分享到:
相关推荐
1. **版本差异**:Oracle ADF 11g引入了新的功能和改进,如增强的数据可视化、更好的用户体验和性能优化。这可能导致10g中的某些代码和配置不再适用,需要进行相应的更新和调整。 2. **UI组件升级**:ADF 11g提供了...
Oracle JDeveloper 10g是一款强大的集成开发环境(IDE),专为构建Java应用程序和Web服务而设计,尤其在Oracle应用服务器上表现卓越。这个工具集成了设计、编码、调试、测试和部署等整个开发过程,使得开发人员可以...
Oracle JDeveloper ADF 框架实例是一个基于 Java 的 SOA 应用程序和用户界面的开发框架,通过提供现成的基础架构服务以及可视的、声明式开发功能简化 Java EE 程序开发的复杂性。 TITLE: Oracle JDeveloper ADF ...
- **可视化布局编辑器**: 如 JSF/JSP/Swing 布局编辑器,使得界面设计更为直观。 - **页面流**: 提供可视化 JSF/Struts 页面流设计,简化 Web 应用程序的结构组织。 - **声明式开发**: 包括 JPA/EJB、Web 服务等...
《JDeveloper 10g教程》是一份详尽的指南,旨在帮助开发人员掌握Oracle Application Development Framework(简称ADF)在JDeveloper 10g环境下的应用。这份文档由Oracle公司于2006年9月发布,版权归属于Oracle,包含...
Oracle JDeveloper 10g是一款强大的集成开发环境(IDE),专为构建Java应用程序和Web应用程序设计,特别是针对Oracle技术栈。这款工具集成了多种功能,包括代码编辑、调试、性能分析、版本控制以及应用程序服务器的...
在JDeveloper中,开发者可以享受到代码编辑、版本控制、项目管理、调试器以及可视化设计工具等众多功能,极大地提高了开发效率。 ADF是Oracle提供的基于Java EE的开发框架,它简化了企业级应用的开发流程。ADF的...
本教程将指导您如何使用Oracle JDeveloper 11g Version 11.1.1.2.0及ADF框架构建一个与数据库交互的富互联网应用(RIA)。在此过程中,您将学习到以下知识点: 1. **创建一个新的Fusion应用和业务组件**:首先需要...
1. **Web 应用设计**: 使用 ADF 构建 Web 应用时,首先需要明确应用的设计目标和功能需求。这包括确定应用程序的数据模型、用户界面布局以及业务逻辑处理方式等。 2. **集成与部署**: ADF 支持与 Oracle Fusion ...
JDeveloper 11g是Oracle在2009年发布的一个版本,它支持ADF的早期版本,提供了一整套工具来支持ADF的模型、视图和控制器(MVC)开发模式。 ADF的核心组成部分包括: 1. **ADF Business Components**:这是数据访问...
Oracle JDeveloper 11g 是一个强大的集成开发环境(IDE),专为构建Java应用程序和Oracle融合中间件解决方案而设计。本教程将引导你了解JDeveloper 11g 11.1.1.2.0的主要组件,并教你如何利用它们创建一个基本的Java...
将Oracle XML Publisher与JDeveloper 10g集成,可以充分利用两者的优势,为开发人员提供一个高效的工作流程,用于设计、开发和部署复杂的业务报告。 集成过程主要包括以下几个关键步骤: 1. **安装和配置**:首先...
在Oracle JDeveloper ADF(Application Development Framework)中,自动生成行号是开发数据展示界面时一个常见的需求。这个功能使得用户能清晰地看到表格中的每一行数据,特别是在处理大量数据时,行号可以帮助用户...
总之,Oracle JDeveloper 11g的资源国际化功能为开发者提供了一整套工具和框架,使得构建多语言应用变得更加简单和高效。通过理解并熟练运用这些特性,开发者可以创建出真正全球化的产品,满足世界各地用户的需求。
JDeveloper 11g包含一个直观的可视化界面设计器,允许开发者通过拖放方式构建用户界面。它支持ADF Faces组件库,提供丰富的UI组件,如表格、图表、按钮等,可以快速创建美观且响应式的用户界面。 **7. 部署与测试**...
Java JDeveloper ADF(Application Development Framework)是Oracle提供的一套强大的应用开发工具和技术框架,主要用于构建企业级Java应用程序。ADF结合了JDeveloper IDE,提供了一整套从设计到部署的解决方案。...
Oracle JDeveloper 10g支持JavaServer Faces (JSF),一个用于构建企业级Java应用程序用户界面的Web应用框架,极大地简化了开发过程。 Oracle JDeveloper 10g的主要特性包括: 1. **集成开发环境**:它提供了一个...
### Oracle JDeveloper 和 Oracle ADF 概述 #### Oracle JDeveloper — 企业级集成开发环境 (IDE) **Oracle JDeveloper** 是一款强大的企业级集成开发环境,专为开发者设计,旨在帮助他们创建复杂的 Java 应用程序...
### Oracle ADF与JDeveloper教程:Java与J2EE开发指南 #### 一、Oracle Application Development Framework (ADF)概述 Oracle Application Development Framework (ADF) 是一个全面的企业级应用开发框架,用于简化...
10. **错误处理**:良好的错误处理机制也是不可或缺的,确保在文件上传过程中遇到问题时,能够给用户提供清晰的反馈。 通过以上步骤,我们可以在JDeveloper中实现一个完整的文件上传功能。无论是简单的文件上传还是...