`

JSF问题小结

    博客分类:
  • JSF
阅读更多

1.如何结束session?
你可以使用session的 invalidate方法 .
下面是一个从action方法中结束session的例子: :

public String logout() {
  FacesContext fc = FacesContext.getCurrentInstance();
  HttpSession session = (HttpSession) fc.getExternalContext().getSession(false);
  session.invalidate();
  return "login_page";
} 

 
下面的代码片段示例了如何在JSP页面中结束session:

<% session.invalidate(); %>
<c:redirect url="loginPage.jsf" />

 


2.如何在JSP页面中访问web.xml中的初始化参数?
你可以使用预定义的JSF EL变量  initParam来访问:
例如,如果你有:

<context-param>
 <param-name>productId</param-name>
 <param-value>2004Q4</param-value>
</context-param>

 
你可以使用她 #{initParam['productId']}来访问 .例如:

Product Id: <h:outputText value="#{initParam['productId']}"/>

 


3.如何从java代码中访问web.xml 中的初始化参数?
你可以使用externalContext的 getInitParameter 方法得到他们.例如 如果你的参数如下:

<context-param>
 <param-name>connectionString</param-name>
 <param-value>jdbc:oracle:thin:scott/tiger@cartman:1521:O901DB</param-value>
</context-param>

 
你可以使用下面代码访问connectionString :

FacesContext fc = FacesContext.getCurrentInstance();String connection = fc.getExternalContext().getInitParameter("connectionString");

  


4.如何从backing bean中得到当前页面的URL?
你可以通过FacesContext得到一个Http Request对象的引用,如下:

FacesContext fc = FacesContext.getCurrentInstance();HttpServletRequest request = (HttpServletRequest) fc.getExternalContext().getRequest(); 

 
然后使用普通的request方法来得到路径信息.还可以使用另外一种方法:

context.getViewRoot().getViewId();

 
将返回你当前JSP(JSF view IDs 基本上只是JSP path names)页面的名字.


5.如何添加上下文路径到outputLink的URL中?
在当前的JSF实现中,当在outputLink 中定义的路径以'/'开始时,没有添加上下文路径到URL中,要弥补该问题请在URL中使用 #{facesContext.externalContext.requestContextPath} 前缀.例如:

<h:outputLink value="#{facesContext.externalContext.requestContextPath}/myPage.faces">

 


6.如何使用URL字符串来传递参数到JSF程序中?
如果你有下面的URL: http://your_server/your_app/product.jsf?id=777, 你可以使用下面的代码来访问所传递的参数:  

FacesContext fc = FacesContext.getCurrentInstance();String id = (String) fc.getExternalContext().getRequestParameterMap().get("id"); 

 
在JSF页面上,你也可以使用预定义的变量访问同样的参数,例如:

<h:outputText value="#{param['id']}" />

 
注意: 你必须直接调用该JSF页面,并且使用servlet 映射 (mapping).


7.如何在页面重新载入的时候保留h:inputSecret中的密码?
设置redisplay=true, it is false by default.
 

8.如何使用h:outputText输出HTML标签?

h:outputText有一个  escape 属性用来处理html 标签. 默认值为true.这意味着所有特殊的符合都被转义为'&'代码. 请看下面示例:  <h:outputText value="<b>This is a text</b>"/> 打印的结果是:  <b>This is a text</b>  而 <h:outputText escape="false" value="<b>This is a text</b>"/>  打印的结果是:  This is a text  当用户点击Command Link后如何显示确认对话框?
h:commandLink指定了 onclick 属性为内部使用. 因此你不可以使用她了, 该问题已经在JSF1.2中修复了,对于JSF1.2以前的版本,你可以在onclick以前使用  onmousedown 事件  
 

<script  language="javascript">  
function ConfirmDelete(link) {    
    var delete = confirm('Do you want to Delete?');    
    if (delete == true) {     
         link.onclick();    
    }  
}
</script>
<h:commandLink action="delete" onmousedown="return ConfirmDelete(this);">  
    <h:outputText value="delete it"/>
</h:commandLink>

 

9.在调用ValueChangeListener 方法后如何重新装载页面?
在 ValueChangeListener的最后,调用  FacesContext.getCurrentInstance().renderResponse()
如何实现"请等待..."页面? 在客户端实现可能很简单.你可以包装JSP页面(或者你想要隐藏的一部分)到一个div中,然后你可以添加更多div,当用户点击提交按钮时这些div出现.这些div可以包含gif动画和其他内容. 场景:当用户点击按钮,调用JS函数,该函数隐藏页面并且显示"请等待..."div.你可以使用CSS来自定义外观:下面是一个正常工作的例子:

<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<f:loadBundle basename="demo.bundle.Messages" var="Message"/>
<html>
<head>
  <title>Input Name Page</title>
  <script>
    function gowait() {
      document.getElementById("main").style.visibility="hidden";
      document.getElementById("wait").style.visibility="visible";
    }
   </script>
   
 </head>
 <body bgcolor="white">
  <f:view>
    <div id="main">
       <h1><h:outputText value="#{Message.inputname_header}"/></h1>
       <h:messages style="color: red"/>
       <h:form id="helloForm">
         <h:outputText value="#{Message.prompt}"/>
         <h:inputText id="userName" value="#{GetNameBean.userName}" required="true">
           <f:validateLength minimum="2" maximum="20"/>
         </h:inputText>
         <h:commandButton onclick="gowait()" id="submit"
               action="#{GetNameBean.action}" value="Say Hello" />
       </h:form>
    </div>
    <div id="wait" style="visibility:hidden; position: absolute; top: 0; left: 0">
       <table width="100%" height ="300px">
         <tr>
           <td align="center" valign="middle">
             <h2>Please, wait...</h2>
           </td>
         </tr>
       </table>
    </div>
  </f:view>
 </body>
</html> 

 
如果你想有一个动画gif图片在"请等待..."中,当表单提交后该图片应该重新加载.因此,再一次指定图片的id,并且添加经过一段时间延时后重新加载的代码.下面是个例子:

<script>
function gowait() {
   document.getElementById("main").style.visibility="hidden";
   document.getElementById("wait").style.visibility="visible";
   window.setTimeout('showProgress()', 500);
}
function showProgress(){
   var wg = document.getElementById("waitgif");
   wg.src=wg.src;
 }
</script>
....
<img id="waitgif" src="/blog/animated.gif">

 [转自:http://www.ceapet.com/blog/index.php?option=com_content&view=article&id=185:jsf&catid=3:jboss&Itemid=62]

分享到:
评论

相关推荐

    JSF基于EJB Hibernate Spring整合开发与项目

    ##### 1.6 小结 完成以上步骤后,就具备了开始JSF项目的基本条件。接下来可以深入学习JSF的具体用法。 #### 二、JSF应用实践 ##### 2.1 JSF准备 在开始JSF项目之前,需要准备好开发环境。这包括配置JDK、安装...

    JSF_实战.doc

    **1.6 小结** - 强调了JSF作为一种强大框架的价值,以及它如何简化Web应用开发。 #### 二、JSF基础 **2.1 关键部件** - **2.1.1 UI组件**:用于构建用户界面的各种组件。 - **2.1.2 呈现器**:控制组件如何在...

    第十四章 开发JSF应用.pdf

    #### 14.9 小结 JSF作为一种Java Web开发框架,为开发者提供了一种更为简洁高效的开发方式。通过本章的学习,你可以了解到如何使用JSF开发基本的Web应用程序,并且了解到如何与其他框架(如Spring)进行整合,构建...

    JSF学习笔记

    JSF一些技术小结 博文链接:https://suhuanxi.iteye.com/blog/166357

    图解BEA Workshop Studio 3.3开发JSF+Spring+JPA(Hibernate)Web应用

    #### 六、小结 通过以上步骤,我们已经完成了使用BEA Workshop Studio 3.3搭建基于JSF+Spring+JPA(Hibernate)的Web应用的基本设置。此IDE的强大之处在于它内置了大量的插件与向导,极大地简化了开发过程,尤其是...

    J2EE开发架构小结.doc

    本文将根据《J2EE开发架构小结》的文件内容,深入探讨J2EE开发架构的多种实现方式,以及每种架构的特点和应用场景。 ### 宏观架构视角 在宏观层面,J2EE架构遵循分层原则,通常分为表现层、业务层、访问层和资源层...

    从Java走向Java+EE+.rar

    1.5 小结 13 第2章 使用Jakarta Commons来简化开发 14 2.1 Jakarta Commons的功能和用法 14 2.2 小结 18 第3章 Java EE容器 19 3.1 什么是容器 19 3.2 Tomcat的安装和使用 20 3.3 小结 25 第4章 在...

    J2EE应用开发详解

    124 8.5.2 拦截器的实现原理 124 8.5.3 Struts2的内置拦截器 124 8.5.4 拦截器的配置和使用 125 8.5.5 自定义拦截器 126 8.6 一个简单的Struts2应用 130 8.7 小结 140 第9章 JSF 141 9.1 JSF技术简介 141 9.1.1 JSF...

    Spring攻略(第二版 中文高清版).part2

    1.15 小结 56 第2章 高级Spring IoC容器 57 2.1 调用静态工厂方法创建Bean 57 2.1.1 问题 57 2.1.2 解决方案 57 2.1.3 工作原理 57 2.2 调用一个实例工厂方法创建Bean 58 2.2.1 问题 58 2.2.2 ...

    Spring攻略(第二版 中文高清版).part1

    1.15 小结 56 第2章 高级Spring IoC容器 57 2.1 调用静态工厂方法创建Bean 57 2.1.1 问题 57 2.1.2 解决方案 57 2.1.3 工作原理 57 2.2 调用一个实例工厂方法创建Bean 58 2.2.1 问题 58 2.2.2 ...

    JAVA WEB典型模块与项目实战大全

    1.5 小结  第2章 myedipse开发工具对各种框架的支持  2.1 使用jsp的两种模式  2.2 struts框架的实现  2.3 hibernate框架的实现  2.4 jpa框架的实现  2.5 spring框架的实现  2.6 jsf框架的实现  2.7...

    Hibernate实战(第2版 中文高清版)

     1.5 小结   第2章 启动项目   2.1 启动Hibernate项目   2.1.1 选择开发过程   2.1.2 建立项目   2.1.3 Hibernate配置和启动   2.1.4 运行和测试应用程序   2.2 启动Java Persistence项目   2.2.1 ...

    Spring in Action(第2版)中文版

    目录 第一部分spring的核心 第1章开始spring之旅 1.1spring是什么 1.2开始spring之旅 1.3理解依赖注入 ...1.5小结 ...2.6小结 ...3.7小结 ...4.6小结 ...5.8小结 ...6.5小结 ...7.7小结 ...8.6小结 ...9.6小结 ...b.4小结

    Spring in Action(第二版 中文高清版).part2

    第一部分 Spring的核心 第1章 开始Spring之旅 1.1 Spring是什么 1.2 开始Spring之旅 1.3 理解依赖注入 1.3.1 依赖注入 1.3.2 DI应用 1.3.3 企业级应用中的依赖注入 1.4 应用AOP ...B.4 小结

    Spring in Action(第二版 中文高清版).part1

    第一部分 Spring的核心 第1章 开始Spring之旅 1.1 Spring是什么 1.2 开始Spring之旅 1.3 理解依赖注入 1.3.1 依赖注入 1.3.2 DI应用 1.3.3 企业级应用中的依赖注入 1.4 应用AOP ...B.4 小结

    JAVA程序开发大全---上半部分

    1.4 本章小结 5 第2章 MyEclipse集成开发环境的使用 6 2.1 MyEclipse集成开发工具界面 6 2.1.1 MyEclipse的菜单栏 7 2.1.2 MyEclipse的工具栏 13 2.1.3 MyEclipse的透视图 14 2.1.4 MyEclipse的视图 17 2.1.5 ...

    面向对象设计 PPT

    主要讲的ssi框架,MVC对于我们来说,已经不陌生了,它起源于20世纪80年代针对smalltalk语言的一种软件设计模式,...由于最近用了一次SSI框架,因此本文主要是对Strtus2、Spring、iBatis三个开源的MVC框架进行一个小结。

Global site tag (gtag.js) - Google Analytics