`

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]

分享到:
评论

相关推荐

    经典JAVA.EE企业应用实战.基于WEBLOGIC_JBOSS的JSF_EJB3_JPA整合开发.pdf

    2.10 本章小结 116 第3章 深入使用JSF 117 3.1 JSF事件机制 118 3.1.1 Java事件模型概述 118 3.1.2 Java事件模型示例 119 3.1.3 JSF事件模型 120 3.1.4 Action事件 122 3.1.5 值改变事件 125 3.1.6 生命周期事件 128...

    MVC模式JSF与Struts的异同.txt

    MVC模式JSF与Struts的异同小结,仅仅是学习则以!

    JSF学习笔记

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

    JavaEE5学习笔记12-JSF集成AJAX使用经验总结

    JavaEE5学习笔记12-JSF集成AJAX使用经验总结。

    从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框架进行一个小结。

    java初学者的工具ppt文件

    小结 永远记住:自始至终,实践是学习Java技术历程中极其重要的一环。脱离了实践,是学不好技术的! Java学习、实践之路依然没有银弹,况且一步步走来,要学的东西很多,勤奋是金! 善于利用Internet上众多的资源,多...

Global site tag (gtag.js) - Google Analytics