`
yourenyouyu2008
  • 浏览: 287871 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

page scope介绍及用途

    博客分类:
  • seam
阅读更多

jsf1.2只提供了3中作用域,application、session、request;jsf2.0增加 view和自定义作用域;seam 使用page作用域扩展了view作用域。

 

有一个非常普遍的需求在jsf1.2中难于解决,当对一个request级的业务对象编辑时页面上必须有这个对象的全部属性的输入域,包括不可改变的对象标识(id)必须用<h:hidden value="#{mb.myObject.id}"/>,如果某种情况下只需要对部分属性进行编辑,而另外的情况下对其他的属性进行编辑,但是这两个页面中必须有全部属性输入框,不需要修改的部分用hidden,如果对象有几十个属性这将是件很麻烦的事情。

 

要想页面上只写要编辑的属性的输入框,那么必须提高作用域级别,换成session级别显然是不合适的(可以解决该问题,但会带来其他问题)。seam引入了page作用域,简单来说就是显示编辑页面后将业务对象保存到组件树中,再次提交时首先从组件树中恢复出业务对象,这样页面上没有的属性也不会丢值,只对页面上有的属性进行更新。

 

源码讲解。。。。。。

 

如果没有使用seam可以使用一个简陋的seam实现代替,这是个jsf jar,放到web-inf/lib下即可。

在classpath下增加managebean.xml文件,在里面配置你的page作用域bean,不需要在jsf中配置了。

<?xml version="1.0" encoding="UTF-8"?>
<!-- 
<mbean><class key="EquipmentBB" value="cn.cjitec.its.common.bb.EquipmentBB"/></mbean>
-->
<mbean><class key="EquipmentBB" value="cn.cjitec.its.common.bb.EquipmentBB"/></mbean>
<mbean><class key="ContractBB" value="cn.cjitec.its.common.bb.ContractBB"/></mbean>
<mbean><class key="CusOrgBranch" value="cn.cjitec.its.common.bb.CusOrgBranch"/></mbean>

 

bean示例,一定要序列化呀

@Name("EquipmentBB")
@Scope(ScopeType.PAGE)
public class EquipmentBB implements Serializable {

 

分享到:
评论
3 楼 lee4321 2010-07-05  
多谢大牛,我在看看,在问下您用过struts嘛,jsf2.0版扩充的myfaces跟新的struct对比怎么样啊
2 楼 yourenyouyu2008 2010-06-08  
你先了解下el的基础知识,jsf1.2用到了下面的几个Resolver
composite.add(IMPLICIT_RESOLVER);
        addELResolvers(composite, associate.getELResolversFromFacesConfig());
        addVariableResolvers(composite, associate);
        addPropertyResolvers(composite, associate);
        addELResolvers(composite, associate.getApplicationELResolvers());
        composite.add(MANAGED_BEAN_RESOLVER);
        composite.add(BUNDLE_RESOLVER);
        composite.add(FACES_BUNDLE_RESOLVER);
        composite.add(MAP_RESOLVER);
        composite.add(LIST_RESOLVER);
        composite.add(ARRAY_RESOLVER);
        composite.add(BEAN_RESOLVER);
        composite.add(SCOPED_RESOLVER);
其中MANAGED_BEAN_RESOLVER和SCOPED_RESOLVER是用于manageban的
com.sun.faces.el.ScopedAttributeELResolver
com.sun.faces.el.ManagedBeanELResolver
ManagedBeanELResolver和ScopedAttributeELResolver的不同之处在于ManagedBeanELResolver用于创建bean 并将将创建好的bean设置进对应scope中,这样 ScopedAttributeELResolver就能获取到任何bean了。
1 楼 lee4321 2010-06-06  
求教,jsf里面managebean通过什么来管理的啊?
还有ELContext为何通过表达式就可以取出管理bean了??

相关推荐

    很齐全的JSTL标签总汇

    - 将主体内容存储到变量:`&lt;c:set var="varName" scope="{page|request|session|application}"&gt;主体内容&lt;/c:set&gt;` - 将值存储到对象属性:`&lt;c:set value="value" target="target" property="propertyName"/&gt;` - ...

    web应用开发技术,jsp应用开发技术复习要点.pdf

    ### Web应用开发技术与JSP应用开发技术复习要点 ...通过以上内容的介绍,我们可以更深入地理解JSP技术的基本概念、运行机制、环境配置及常用标签和动作元素的应用,这对于Web应用开发来说至关重要。

    seam 注解 pdf

    - **解释**:`@Scope`注解用于设置组件的生命周期范围,常见的范围包括`EVENT`、`PAGE`、`CONVERSATION`、`SESSION`、`BUSINESS_PROCESS`、`APPLICATION`、`STATELESS`等。这些范围的选择会直接影响到组件实例的创建...

    ZK开发者手册.pdf

    下面详细介绍了一些常用的隐式对象: ##### 1. 应用程序范围 (applicationScope - java.util.Map) - **用途**:提供对整个应用程序范围内的共享数据访问。 - **示例**:获取全局配置信息或共享状态数据。 ##### 2....

    javaweb面试题

    在JavaWeb开发过程中,有多个核心对象被频繁地使用,它们分别是:`pageContext`, `request`, `response`, `session`, `application`, `config`, `exception`, `page`, 和 `out`。 ##### 1. pageContext (javax....

    EL表达式大全

    - **Page Scope**:`pageScope` - **Request Scope**:`requestScope` - **Session Scope**:`sessionScope` - **Application Scope**:`applicationScope` #### 二、EL表达式的用途 EL表达式广泛应用于JSP页面中...

    EL表达式和jsp JSTL标签库的总结

    ### EL表达式与JSP JSTL标签库的总结 ...&lt;jsp:useBean id="a0" class="com.bupuxiang.dissertionseven2.el.A" scope="page"&gt; &lt;jsp:useBean id="a1" class="com.bupuxiang.dissertionseven2.el.A" scope="request"&gt; ...

    良心出品JSP期末考试复习试卷.doc

    19. 在JSP中为内置对象定义了四种作用范围,即Application Scope、Session Scope、Page Scope和Request Scope四个作用范围。 20. JavaBean是一个java类,必须有一个无参的构造方法。 21. 在JSP中使用JavaBean的...

    JSTL核心标签库的一些应用

    此外,还可以通过`scope`属性指定变量的作用域,如`page`, `request`, `session`, `application`。例如: ```jsp &lt;c:set var="username" value="bzc" scope="session" /&gt; ``` 还可以设置对象属性,如: ```jsp ...

    JSP 常用的标签以及用法举例

    - **示例**: `&lt;jsp:useBean id="beanName" class="package.class" scope="page|request|session|application" /&gt;` - **说明**: 该标签允许开发者在页面中定义和使用JavaBeans,这对于封装复杂逻辑非常有用。 5. ...

    DWR配置详解

    * 范围(Scope):范围是指远程Bean的生命周期,例如application、session、request、page等。 ### dwr.xml 文件结构 dwr.xml 文件的结构主要包括两个部分:&lt;allow&gt; 和 。 * &lt;allow&gt;:allow 段落里面定义了DWR...

    jstl标签知识汇总

    - `scope` 属性用于指定变量的作用域,可以是`page`, `request`, `session` 或 `application`。 3. **** - 用途:用于从指定的JSP范围内移除指定的变量。 - 示例: ```jsp &lt;c:remove var="name" scope=...

    EL表达式总结

    - 通过`isELIgnored`属性可以控制EL是否启用,`&lt;%@ page isELIgnored="true"%&gt;`,默认在JSP 2.0及更高版本中是启用的。 - EL支持逻辑表达式(如`${true and false}`)、关系表达式(如`${5&gt;6}`)和算术表达式(如`${...

    windows控制台常用指令

    - **命令格式**:`gpresult [/scope {user | computer}] [/r] [/v] [/z]` - **用途**:此命令用于显示用户或计算机的组策略结果。 #### 39. GRANTABL - 显示或修改文件或目录的 ACL - **命令格式**:`icacls [path]...

    web应用开发技术,jsp应用开发技术复习要点归类.pdf

    &lt;jsp:useBean id="myBean" scope="page" class="com.example.MyBean" /&gt; ``` ****示例: ```jsp ``` 综上所述,本文详细介绍了JSP的关键概念和技术细节,包括JSP的运行原理、环境配置、指令与动作元素等,这对于...

    JSTL详解--标签库介绍.doc

    - `scope`:变量的作用域,默认为`page`。 示例: ```html ${oneString} ``` 该示例将创建一个名为`oneString`的变量,值为`This is Andy`,并在页面上显示。 #### 五、总结 JSTL的Core标签库为JSP开发者...

    jstl标签详解

    #### JSTL定义及特性 JSTL(JSP Standard Tag Library,JSP标准标签库)是Apache Jakarta项目的一部分,它是一个开源的JSP标签库,旨在提高JSP页面的开发效率和可维护性。JSTL只能在支持JSP 1.2和Servlet 2.3规范的...

    el_jstl的初步了解

    - `scope`:设置变量的作用域,可以是 `page`, `request`, `session`, `application`。 示例: ```jsp &lt;c:set var="test2" scope="session" value="${test.testinfo}" /&gt; ``` ##### `&lt;c:remove&gt;` - **用途**:...

Global site tag (gtag.js) - Google Analytics