jsf tree组件_JSF和“立即”属性–命令组件

jsf tree组件

JSF中的即时属性通常被误解。 如果您不相信我,请查看Stack Overflow 。 造成混淆的部分原因可能是由于输入(即<h:inputText />)和命令(即<h:commandButton />)组件都立即可用,每个组件对JSF生命周期的影响都不同。

这是标准的JSF生命周期:

出于本文的目的,我假设您熟悉JSF生命周期的基础知识。 如果您需要简介或内存更新,请查看Java EE 6教程– JavaServer Faces应用程序的生命周期 。

注意:本文中的代码示例适用于JSF 2(Java EE 6),但其原理与JSF 1.2(Java EE 5)相同。

在Command组件上为Instant = true

标准 JSF生命周期中,在“ 调用应用程序”阶段评估Command组件上的action属性。 例如,假设我们有一个User实体/ bean:

public class User implements Serializable {@NotBlank@Length(max = 50)private String firstName;@NotBlank@Length(max = 50)private String lastName;/* Snip constructors, getters/setters, a nice toString() method, etc */
}

还有一个UserManager用作我们的托管bean:

@SessionScoped
@ManagedBean
public class UserManager {private User newUser;/* Snip some general page logic... */public String addUser() {//Snip logic to persist newUserFacesContext.getCurrentInstance().addMessage(null,new FacesMessage("User " + newUser.toString() + " added"));return "/home.xhtml";}

还有一个基本的Facelets页面newUser.xhtml ,以呈现视图:

<h:form><h:panelGrid columns="2"><h:outputText value="First Name: " /><h:panelGroup><h:inputText id="firstName"value="#{userManager.newUser.firstName}" /><h:message for="firstName" /></h:panelGroup><h:outputText value="Last Name: " /><h:panelGroup><h:inputText id="lastName" value="#{userManager.newUser.lastName}" /><h:message for="lastName" /></h:panelGroup></h:panelGrid><h:commandButton value="Add User" action="#{userManager.addUser()}" />
</h:form>

所有这些结合起来产生了这种可爱的形式:

当用户单击“ 添加用户”按钮时,将在“ 调用应用程序”阶段调用 #{userManager.addUser} 。 这是有道理的,因为我们希望在持久保存输入字段之前先对其进行验证,转换并将其应用于newUser。

现在,让我们在页面上添加一个“取消”按钮,以防用户改变主意。 我们将在页面中添加另一个<h:commandButton />:

<h:form><!-- Snip Input components --> <h:commandButton value="Add User" action="#{userManager.addUser()}" /><h:commandButton value="Cancel" action="#{userManager.cancel()}" />
</h:form>

以及UserManagercancel()方法:

public String cancel() {newUser = new User();FacesContext.getCurrentInstance().addMessage(null,new FacesMessage("Cancelled new user"));return "/home.xhtml";
}

看起来不错吧? 但是,当我们实际尝试使用“取消”按钮时,会收到错误消息,提示您需要输入名字和姓氏:

这是因为#{userManager.cancel}直到在流程验证阶段之后发生的“ 调用应用程序”阶段才被调用 ; 由于我们没有输入名字和姓氏,因此在调用#{userManager.cancel}之前验证失败,并且在“ 过程验证”阶段之后呈现响应。

我们当然不希望最终用户在取消之前输入有效用户! 幸运的是,JSF在Command组件上提供了即时属性。 当直接设置为true的命令组件上,行动调用的应用请求值阶段:

这非常适合我们的“取消”用例。 如果我们将Instant = true添加到Cancel,则在进行任何验证之前,将在Apply Request Values阶段调用# {userManager.cancel}

<h:form>  <!-- Snip Input components --><h:commandButton value="Add User" action="#{userManager.addUser()}" /><h:commandButton value="Cancel" action="#{userManager.cancel()}" immediate="true" />
</h:form>

因此,现在单击“取消”时,将在“ 应用请求值”阶段中调用#{userManager.cancel} ,并通过预期的取消消息返回首页。 没有验证错误!


输入组件也具有即时属性,该属性还将其所有逻辑移至“ 应用请求值”阶段。 但是,其行为与Command组件略有不同,特别是取决于对Input组件的验证是否成功。 我的下一篇文章将介绍Input组件上的Instant = true 。 现在,这里是JSF生命周期如何受到影响的预览:

参考: JSF on Java博客上的 JSF和“立即”属性–命令组件,来自我们的JCG合作伙伴 Jerry Orr。


翻译自: https://www.javacodegeeks.com/2012/01/jsf-and-immediate-attribute-command.html

jsf tree组件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/357627.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

笔记本电脑电池显示4%可用(已接通电源),经过清灰又莫名奇妙的可以续航啦,很奇怪!

公司的办公电脑&#xff0c;估计是转手租用好几年了&#xff0c;今天打开一看电池一直充电充不进去。刚开始一直充电显示笔记本电脑电池显示7%可用&#xff0c;等会断电打开笔记本电脑电池显示4%可用。我已经感觉电池坏了&#xff0c;然后我感觉电脑好久没有清灰了&#xff0c;…

python爬取ajax动态内容肯德基门店,Python爬虫如何爬取KFC地址

随着人们生活水平的提高&#xff0c;肯德基这类的快餐消费的十分火爆&#xff0c;成为小朋友和年轻人的最爱&#xff0c;我们到一个地方想要找到肯德基店面&#xff0c;会根据导航获取肯德基地址&#xff0c;那你知道我们也可以使用python爬虫获取KFC地址吗&#xff1f;我们可以…

百度网盘限速解决方案

解决各种网盘工具的助手,解决百度网盘限速的解决办法。 KinhDown 官网:https://kinhdown.kinh.cc/ KinhDown 支持百度网盘 Windows、安卓,可以免登录解除部分百度网盘资源限速问题。 下载 雷鸟下载 雷鸟下载是一款基于多资源超线程技术的下载软件,雷鸟下载针对各类网盘做…

MyEclipes+JSP+SSH+MySQL实现一个文章发布系统

导读:随着计算机技术的迅速发展,网络正以一种前所未有的冲击力影响着人类的生产和生活。网络的快速发展,颠覆了传统的信息传播方式,冲破了传统的时间,空间的局限性,继而引发了人类阅读方式的变革。现如今,网络阅读已成为一种新的时尚,在这种趋势下,文章发布系统应运而…

zblog php 侧边栏样式,ZBlogPHP免费主题Blogs如何修改侧边栏搜索框样式?

老古偶尔访问有某些使用 ZBlogPHP 免费主题 Blogs 的站点&#xff0c;发现他们的侧边栏搜索框样式都比较丑&#xff0c;一看就知道这些站长都没有认真阅读Blogs 主题介绍页&#xff0c;因为介绍页中的第四大点侧边栏模块使用第 5 小点就介绍了如何修改侧边栏搜索框样式。下图左…

BZOJ 3511 土地划分

AC通道&#xff1a;http://www.lydsy.com/JudgeOnline/problem.php?id3511 题目分析&#xff1a; 看上去和前面的人员雇佣以及小M种田都很像。 最小割模型来求最大值&#xff0c;一般都是考虑怎样构图使得满足一个组合能被表示出来&#xff0c;而且当满足一个组合的时候&#…

MyEclipes+html+jsp+mysql实现一个物流信息网

导读:该系统使用java语言开发,使系统具有更好的平台性和可扩展性。 该系统实现了用户登录、注册、查询快递信息、快递公司注册成为合作伙伴以及系统管理员对信息进行管理等功能。系统的主要界面会将所有的服务排列好,用户可以自行选择服务。用户可以查询快递的详细信息以…

MyEclipes+JSP+tomcat+MySQL实现JavaEE平台项目管理系统

导读:随着社会信息化的发展,很多的社会管理问题也一并出现了根本性变化,项目公司的报表及文件管理也发生了变化,以前的管理是一个分布式的信息,然后围绕中心由通过简单的来传输信息,这使得办事效率非常低下,所以需要需要适用信息货的发展,开发一套项目的管理信息系统。…

Myesclipe+SSH+jsp+mysql+tomcate实现一个简单的CRM客户关系管理系统

导读: CRM客户关系管理系统的目的通过客户管理,产品管理,系统管理等功能同客户建立联并收集客户信息,此基础上满足客户"一对一"个性化服务。同时信息在企业的流程上得以流转,让客户得到高效的,满意的服务。本系统包括信息管理、客户管理、产品管理等多项功能。…

adf平稳性检测_ADF声明性组件示例

adf平稳性检测在我以前的文章中&#xff0c;我答应展示如何为智能值列表创建ADF声明性组件。 因此&#xff0c;我将创建一个包含三个元素的组件&#xff1a;标签&#xff0c;输入文本和值的组合框列表。 那很容易。 我在工作空间中创建了一个单独的ADF ViewController项目&…

JSP+Tomcat+SQL Server 2000+JDBC实现合同信息管理系统

导读:随着信息科学技术的飞速发展,人们逐渐意识到对信息管理软件的运用可以使日常工作更加方便、快捷和高效。论文详细论述了公司合同管理系统的开发设计过程。软件采用JSP开发技术,Tomcat作容器, SQL Server 2000作数据库管理系统,实现了创建合同、修改合同、删除合同、合…

JSP+JDBC+XML+mysql实现企业电子投票系统

导读:企业电子投票系统主要用来统计网站用户对某个主题或热门话题的意见。决策者通过这些统计数据做出相应的决策。企业电子投票系统是一般网站必备的程序之一,如果网站开发者想了解用户对该网站的意见和建议。他可以设计这样一个投票主题:你认为该网站如何?(A.很好 B.一般…

matlab 无向拓扑图,无向图绘画树状拓扑图算法

基于目前Network项目需要&#xff0c;研究相关树形算法该需求难点如下&#xff1a;1、目前拓扑图是无向图&#xff0c;而树大多数都是基于有向图来画的&#xff0c;无法确定根节点2、网络拓扑中存在回环问题&#xff0c;导致链路可能会存在重叠问题针对问题1&#xff0c;目前根…

Java Mail+MYSQL+Tomcate+jsp实现企业快信系统

导读:首先对企业快信的开发进行了较深入的研究,然后对短信发送与邮件发送原理进行了介绍,接下来对系统的概要设计、功能模块、数据库设计,以及名片夹管理功能与邮件发送功能的具体实现作了细致阐述,最后是系统效果的展示。企业快信系统是一个集短信与邮件为一体的移动商务…

odbc连接oracle失败,大神解答win7系统ODBC无法连接ORACLE的处理方案

随着电脑的使用率越来越高&#xff0c;我们有时候可能会遇到win7系统ODBC无法连接ORACLE问题&#xff0c;如果我们遇到了win7系统ODBC无法连接ORACLE的问题&#xff0c;要怎么处理win7系统ODBC无法连接ORACLE呢&#xff1f;我们只用1)操作系统是Win7 x64&#xff0c;客户端是Or…

spring-mvc教程_使用MVC模式制作游戏-教程和简介

spring-mvc教程游戏开发中一种有用的体系结构模式是MVC&#xff08;模型视图控制器&#xff09;模式。 它有助于分离输入逻辑&#xff0c;游戏逻辑和UI&#xff08;渲染&#xff09;。 在任何游戏开发项目的早期阶段&#xff0c;它的用途很快就会被注意到&#xff0c;因为它可以…

web前端开发需要学什么(包含前端学习路线)

前端开发&#xff0c;做到后面&#xff0c;是可以走很多方向的&#xff1b;但是要保证后期的平滑过度&#xff0c;前期还是要把一些必须的知识搞扎实的&#xff1b;web前端开发需要学什么环境搭建前端环境很好搭建&#xff0c;编辑器浏览器即可。浏览器推荐使用 Chrome行业内主…

2015年必火的五个Html5移动开发工具推荐

NO.1 DCloudHBuilder:基于HTML5开发工具 中文官网&#xff1a;http://www.dcloud.io/ DCloudHBuilder:基于HTML5开发工具是当前最快的HTML开发工具&#xff0c;强大的代码助手帮你快速完成开发&#xff0c;最全的语法库和浏览器兼容 性数据让浏览器碎片化不再头痛&#xff0c…

想当程序员,如何判断自己是否适合当前端程序员?

说在前面&#xff1a;有粉丝提问说自己并不确定学前端&#xff0c;因为自己还没有工作&#xff0c;想做程序员&#xff0c;想问问做哪个方向比较有前途&#xff1b; 有两三个小伙伴这么问的&#xff0c;感觉很有意义&#xff0c;拿出来单独说说比较好。 目录 程序员有哪些选择&…

个税社保

资料来源&#xff1a;http://finance.qq.com/cross/20160218/H9cM96A8.html?pgv_refaio2015&ptlang2052转载于:https://www.cnblogs.com/weikang/p/5200832.html