网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > JAVA > J2EE > J2ee核心 > 使用JSF(Java Server Faces)开发(四)  

使用JSF(Java Server Faces)开发(四)

2004-05-27  作者:BitsCN整理  来源:中国网管联盟  点评 投稿 收藏


  处理表单数据
  类PBuilder包含一个静态方法以PBean实例为参数并且根据JavaBean对象的属性生成HTML:
  
  package com.devsphere.articles.usingjsf;
  
  public class PBuilder {
  
    public static String toHTML(PBean pbean) {
      StringBuffer buf = new StringBuffer();
      buf.append("<p align=\"");
      buf.append(pbean.getAlign());
      buf.append("\">");
      buf.append("<font size=\"");
      buf.append(pbean.getSize());
      buf.append("\" color=\"");
      buf.append(pbean.getColor());
      buf.append("\"");
      Object font[] = pbean.getFont();
      if (font != null && font.length > 0) {
        buf.append(" face=\"");
        for (int j = 0; j < font.length; j++) {
          if (j > 0)
            buf.append(',');
          buf.append(font[j]);
        }
        buf.append("\"");

网管朋友网www_bitscn_net


      }
      buf.append(">");
      if (pbean.isBold())
        buf.append("<b>");
      if (pbean.isItalic())
        buf.append("<i>");
      if (pbean.isUnderline())
        buf.append("<u>");
      String s = pbean.getText();
      int n = s.length();
      for (int i = 0; i < n; i++) {
        char ch = s.charAt(i);
        switch (ch) {
          case '<':
            buf.append("<");
            break;
          case '>':
            buf.append(">");
            break;
          case '&':
            buf.append("&");
            break;
          case '"':
            buf.append(""");
            break;
          default:
            buf.append(ch);
        }
网管有家www.bitscn.net

      }
      if (pbean.isUnderline())
        buf.append("</u>");
      if (pbean.isItalic())
        buf.append("</i>");
      if (pbean.isBold())
        buf.append("</b>");
      buf.append("</font>");
      buf.append("</p>");
      return buf.toString();
    }
  
  }
  
  文件view.jsp用<jsp:useBean>获得JSF管理的JavaBean实例,调用PBuilder的toHTML()方法,并输出HTML结果。JSF的<h:command_hyperlink>标记用于提供一个返回edit.jsp页的超联接:
  
  <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"; %>
  <%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"; %>
  
  <html>
  <head>
  <title>View</title>
  </head>
  <body>
  
  <jsp:useBean id="pbean" scope="session"
    class="com.devsphere.articles.usingjsf.PBean"/>
  
  <%= com.devsphere.articles.usingjsf.PBuilder.toHTML(pbean) %>

网管联盟bitsCN@com


  
  <f:use_faces>
    <h:command_hyperlink label="Back to Editing" href="edit.jsp"/>
  </f:use_faces>
  
  </body>
  </html>
  
  应用配置
  JSF框架有一个用于实现控制器(controller)的服务端小程序(servlet)叫FacesServlet,该小程序必须截取所有包含JSF标记的JSP页面的请求。这个小程序在应用描述器文件web.xml中进行配置,并且映射为 /faces/* 的URL模式。要激活这个小程序,JSP程序中的路径必须以“faces”开头。应用的主页index.jsp调用response.sendRedirect()使浏览器转移到faces/edit.jsp页面:
  
  <% response.sendRedirect("faces/edit.jsp"); %>
  
  文件faces-config.xml的路径在描述器文件web.xml中用环境参数进行说明,该描述器文件中还包含了监听器注册以及其他一些用于JSF实现的引用说明。文件web.xml的内容如下所示:
  
  <?xml version="1.0"?>
  
  <!DOCTYPE web-app PUBLIC
   "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
   "http://java.sun.com/dtd/web-app_2_3.dtd";>
  
  <web-app>
网管u家www.bitscn.net

  
    <context-param>
      <param-name>javax.faces.application.CONFIG_FILES</param-name>
      <param-value>/WEB-INF/faces-config.xml</param-value>
    </context-param>
  
    <context-param>
      <param-name>com.sun.faces.saveStateInClient</param-name>
      <param-value>false</param-value>
    </context-param>
  
    <context-param>
      <param-name>com.sun.faces.validateXml</param-name>
      <param-value>true</param-value>
    </context-param>
  
    <listener>
      <listener-class>com.sun.faces.config.ConfigListener</listener-class>
    </listener>
  
    <servlet>
      <servlet-name>FacesServlet</servlet-name>
      <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
      <load-on-startup>1</load-on-startup>
    </servlet> 网管u家www.bitscn.net
  
    <servlet-mapping>
      <servlet-name>FacesServlet</servlet-name>
      <url-pattern>/faces/*</url-pattern>
    </servlet-mapping>
  
  </web-app>
  
  当第一次生成一个表单时,JSF创建一个称之为组件树(component tree)的对象结构,其中包含用户界面组件以及验证器(validator)注册这些组件等等相关信息。用户提交表单数据时,JSF根据组件树中的信息进行一些操作,如验证用户输入。默认情况下,JSF将组件树作为一个属性存储在session中。一旦应用完成,这种方式能够正常的运行。但是,在进一步开发时,只要你改变了JSF表单(包括添加或者删除界面组件),JSF就会抛出异常,因为在JSP文件被修改时JSF没有废弃过期的组件树。应该把在web.xml中声明的标记saveStateInClient设置为真(true)。做了这个修改之后,JSF将序列化组件树并将其存入HTML表单的隐藏区域中而不再存储在session中。
  
  总结
  本文已经介绍了JSF框架的基本特性,演示了如何用JSF标记建立表单。作为预览包,JSF的实现引用EA4还不能部署,但大部分功能是可用的。在JCP组织(Java Community Process)两年多的研究表明,JSF会受到广泛的欢迎,Java开发者确实需要一种建立web用户界面的标准标记库和建立定制web组件的标准API
TAGs开发   buf.append   JSF   组件   if   表单   程序    
 上一篇:solaris上开发J2EE应用中文问题的解决   下一篇:使用JSF(Java Server Faces)开发(三)
相关文章列表
使用JSF(Java Server Faces)开发(四) 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
1.对J2EE应用系统分层设计的思考
2.JLDAP 连接池的创建及测试程序
3.Ruby on Rails 和J2EE:两者能否共存?
4.评点Flex结合J2EE的开发与架构
5.如何才算掌握了Java EE
6.排序链树搜索算法在GIS POI关键字搜索中
7.Maven2 Pom.xml元素详解
8.通过JMX来获得web service的信息
9.Java Persistence API (JPA) 的陷阱
10.Apusic Operamasks的资源注入
最新推荐文章:
1.J2EE中SQL语句自动构造方法
2.J2EE系统优化之对象与循环
3.经验交流:学习J2EE流程中的经验和教训
4.基于NetBeans 比较Java EE 5平台和J2EE 1
5.初学者如何开发出一个高质量J2EE系统
6.编写JSR-168 Portlet指南
7.基于J2EE的电子商务开发模型及其实现
8.JNI调用C/C++方法从控制台输入密码
9.在NetBeans 4.1中使用Swing组件
10.Java EE/J2EE面向对象编程之道
网管论坛交流:
·大家来开心一下吧---看了会很开心的东西-
·中国人不可不知道的知识
·@@小鹏◎◎小鹏同志与某位女明星亲密接触
·◎◎小鹏◎◎发现不明生物,居然正在交配
·[图文]^^^版主是什么?????
·泡论坛的女人是好女人
·做个“水性杨花”的女人
·献给mm俱乐部的所有mm
·深圳一集团企业电脑基础应用培训教程
·■■■■十一遊玩照■■■■■