博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JSF+Spring+JPA(Hibernate)常见bug解决办法
阅读量:6087 次
发布时间:2019-06-20

本文共 2649 字,大约阅读时间需要 8 分钟。

hot3.png

由于primefaces在国内使用的并不是太多,因此,国内对jsf做系统、详细的介绍的资料很少,即使有一些资料,也仅仅是对国外资料的简单翻译或者是仅仅讲表面现象(皮毛而已),它们的语句甚至还是错误的,很可能会误导使用者。

相对来说,看国内的那些仅仅是翻译过来的文章或书籍不如直接看国外的官方文档或资料来的实在,在我讲述jsf页面中如何使用js调用后台bean方法之前,先给大家说几个国外的资料。在primefaces官方网站上,你可以搜索到几乎所有你需要的东西,primefaces官网为: 如过觉得自己英语不好的童鞋,可以前往primefaces国内镜像网站查阅资料:  ,只是国内的这个网站正在翻译中,有些东西还不完善;如果有想细致的了解primefaces的朋友,还可以下载primefaces的官方文档,最新的官方文档为5.2,全英文,我在这里给大家提供我下载好的primefaces官方文档: ,在这个文档里你可以通过他们的示例来组合出来很多有趣的东西。另外我在淘宝上发现了Primefaces官方的JSF框架,官方售价300RMB,淘宝售价才五元,大家可以前去学习:

一、单选/多选(p:selectOneMenu/p:selectCheckboxMenu)

         1、选项只有第一次可以传至后台,多次点击就不能传递至后台:

页面代码如下:

测试页面

后台bean类代pvgEditManager.java码如下:

package test;import java.io.Serializable;import java.util.List;import javax.faces.view.ViewScoped;import javax.inject.Named;import zuccess.zcplt.basic.privilege.dao.TableDao;@Named("pvgEditManager")@ViewScopedpublic class PvgEditManager implements Serializable {	private static final long serialVersionUID = 5586577032813381888L;	private TableDao classDao = new TableDao();	private List
 classStrings = classDao.findAllClass();// 重数据库中查询到的所有的表 private String selectedClassString; // 选中的表 /***  * 获取所有的类的名称  */ public void searchClasses() { classStrings = classDao.findAllClass(); } /**  * 表改变  */ public void onTableChange() { System.out.println("获取的class名称为:++++++"+selectedClassString); } public List
 getClassStrings() { return classStrings; } public void setClassStrings(List
 classStrings) { this.classStrings = classStrings; } public String getSelectedClassString() { System.out.println("get方法中的置为:==============="+selectedClassString); return selectedClassString; } public void setSelectedClassString(String selectedClassString) { this.selectedClassString = selectedClassString; System.out.println("set方法中的置为:==============="+selectedClassString); } }

当测试以上代码时,会发现只有第一次选择下拉列表时能调用后台set/get方法,而再次点击就不能调用set/get方法,仔细分析上面的逻辑发现,其根本原因是由于,在这个下拉列表的有个属性disabled="#{pvgEditManager.selectedClassString !=null}",把这个属性去掉就没有问题了;那么,为什么这个属性就会造成这个问题呢,其根本原因在于,我想达到当选择了一次下拉列表以后就不再让它可以选择,而正是由于第一次选择了以后,这个selectedClassString已经在后台不为null了,但是由于这个动作并没有自动刷新页面,造成在页面上的下拉列表仍旧可以操作的假象,但实际上即使再次选择了下拉列表,由于其是不可操作的,它的选择的动作肯定不会传递到后台。

找到问题了,那么解决就好办了,要么把isabled="#{pvgEditManager.selectedClassString !=null}"去掉,要么把内容

pvgEditManager.selectedClassString换为另一个:例如disabled="#{pvgEditManager.status !=null}" ,当然你需要在后台定义这个status属性,通过这个status状态来控制下拉列表是否可操作。

转载于:https://my.oschina.net/guopengfei/blog/381705

你可能感兴趣的文章
多线程之线程池任务管理通用模板
查看>>
CSS3让长单词与URL地址自动换行——word-wrap属性
查看>>
CodeForces 580B Kefa and Company
查看>>
开发规范浅谈
查看>>
Spark Streaming揭秘 Day29 深入理解Spark2.x中的Structured Streaming
查看>>
鼠标增强软件StrokeIt使用方法
查看>>
本地连接linux虚拟机的方法
查看>>
某公司面试java试题之【二】,看看吧,说不定就是你将要做的题
查看>>
BABOK - 企业分析(Enterprise Analysis)概要
查看>>
Linux 配置vnc,开启linux远程桌面
查看>>
Hadoop安装测试简单记录
查看>>
CentOS6.4关闭触控板
查看>>
React Native 极光推送填坑(ios)
查看>>
Terratest:一个用于自动化基础设施测试的开源Go库
查看>>
修改Windows远程终端默认端口,让服务器更安全
查看>>
扩展器必须,SAS 2.0未必(SAS挺进中端存储系统之三)
查看>>
Eclipse遇到Initializing Java Tooling解决办法
查看>>
while((ch = getchar()) != '\n')
查看>>
好程序员web前端分享JS检查浏览器类型和版本
查看>>
Oracle DG 逻辑Standby数据同步性能优化
查看>>