文档章节

JSF+Spring+JPA(Hibernate)常见bug解决办法

码上中国博客
 码上中国博客
发布于 2015/03/03 09:42
字数 1117
阅读 133
收藏 1
点赞 0
评论 0

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

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

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

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

页面代码如下:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:p="http://primefaces.org/ui"
	xmlns:pe="http://primefaces.org/ui/extensions">
<f:view contentType="text/html" locale="zh_CN">

	<h:head title="ZCPLT - HOME">
	<title>测试页面</title>
		<f:facet name="first">
			<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
			<meta http-equiv="pragma" content="no-cache" />
			<meta http-equiv="cache-control" content="no-cache" />
			<meta http-equiv="expires" content="0" />
		</f:facet>
		<h:outputStylesheet name="css/theme.css" />
		<h:outputStylesheet name="css/image.css" />
		<h:outputStylesheet name="css/perfect-scrollbar.css" />
		<h:outputScript name="jquery/jquery.js" library="primefaces" />
		<h:outputScript name="jquery/jquery-plugins.js" library="primefaces" />
		<h:outputScript name="script/perfect-scrollbar.js" />
		<ui:insert name="head" />
	</h:head>

<h:body>
	<h:form id="form">
		<h:panelGrid columns="6" id="addPanel">
			<p:outputLabel for="tableName" value="选择类名" />
			<p:selectOneMenu id="tableName" value="#{pvgEditManager.selectedClassString}"  
				disabled="#{pvgEditManager.selectedClassString !=null}" panelStyle="width:180px"
				effect="fade" style="width:160px" filter="true"
				filterMatchMode="startsWith">
				<p:ajax listener="#{pvgEditManager.onTableChange}" />
				<f:selectItem itemLabel="选择类" itemValue="" noSelectionOption="true" />
				<f:selectItems value="#{pvgEditManager.classStrings}" />
			</p:selectOneMenu>
		</h:panelGrid>
	</h:form>
</h:body>
</f:view>
</html>

后台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")
@ViewScoped
public class PvgEditManager implements Serializable {

	private static final long serialVersionUID = 5586577032813381888L;

	private TableDao classDao = new TableDao();
	private List<String> classStrings = classDao.findAllClass();// 重数据库中查询到的所有的表
	private String selectedClassString; // 选中的表
	/***
	 * 获取所有的类的名称
	 */
	public void searchClasses() {
		classStrings = classDao.findAllClass();
	}
	/**
	 * 表改变
	 */
	public void onTableChange() {
		System.out.println("获取的class名称为:++++++"+selectedClassString);
	}
	public List<String> getClassStrings() {
		return classStrings;
	}
	public void setClassStrings(List<String> 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状态来控制下拉列表是否可操作。



© 著作权归作者所有

共有 人打赏支持
码上中国博客

码上中国博客

粉丝 53
博文 74
码字总数 70310
作品 1
北京
后端工程师
Hibernate4 中复合主键二级缓存无效

Hibernate4 中复合主键二级缓存ehcahe无效;早期是hibernate一个bug;现在应该被修复了把,但还是不行;谁有解决办法???

pnwazgx
2015/07/23
114
0
Hibernate Validator 6.0.9 发布,进一步改进性能

Hibernate Validator 6.0.9.Final 已发布,建议 6.x 版本的用户尽快升级,它是 6.0.8.Final 的直接替换版本,带来了一些不错的改进并修复 bug 。 性能改进: 进一步的性能调整,使得 Hibern...

王练
03/28
0
0
IOS开发常见warning汇总

Warning: Scene is unreachable due to lack of entry points and does not have an identifier for runtime access via -instantiateViewControllerWithIdentifier 解释:Storyboard中有Vie......

恋恋美食
2015/12/15
138
0
FastJson转POJO的bug

您好,现在fastjson最新版本是多少?还有我把json转成hibernate的POJO的时候出现了 com.alibaba.fastjson.JSONException: can not cast to : java.util.Set 的错误,请问有没有好的解决办法?...

徐福龙
2013/02/05
1K
2
ORA-06553: PLS-306: wrong number or types of ar...

昨天修改bug中遇到的问题 执行的操作是用java程序调用procedures,数据库采用oracle。 但是在java调用此存过后,执行时console中报了以下错误: java.lang.Exception: java.sql.SQLException...

smh821025
2013/02/09
0
0
使用Hibernate+MySql+native SQL的BUG,以及解决办法

本来是mssql+hibernate+native SQL 应用的很和谐 但是到了把mssql换成mysql,就出了错(同样的数据结构和数据)。 查询方法是: 错误信息: 看到最后Caused by: java.sql.SQLException: 所以我...

thinkyoung
2015/01/15
0
0
Hibernate下onUpdate处理机制

最近在处理一些数据多语言的支持技术。由于之前的系统没有对多语言支持和持久层采用Hibernate实现,所以考虑通过lifecycle接口,在对象持久化时,将多语言字段信息进行语言数据拼接,然后再进...

艳沐石
2013/04/25
0
0
Hibernate api 之常见的类(配置类,会话工厂类,会话类)

1:Configuration :配置管理类对象   1.1:config.configure():      加载主配置文件的方法(hibernate.cfg.xml) ,默认加载src/hibernate.cfg.xml   1.2:config.configure(“cn/...

别叫小伙
2017/03/09
0
0
but failed to unregister it when the web .....

在Intellij IDEA中运行web项目,抛出了一大顿异常。仔细看了下控制台,发现如下关键信息: org.apache.catalina.loader.WebappClassLoader.clearReferencesJdbc The web application [*(项目...

Java编程思想
2014/02/14
0
0
Hibernate连接数据库超时设置

com.MySQL.jdbc.CommunicationsException: The last packet successfully received from the server was58129 seconds ago.The last packet sent successfully to the server was 58129 seco......

zchuanzhao
2016/11/14
17
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Call to undefined function Workerman\posix_getpid

workerman 在centos下报PHP Fatal error: Call to undefined function Workerman\posix_getpid posix在下面这个包中php-process...

dragon_tech
8分钟前
0
0
mysql 7.4 创建表 时  所建表 字段太多 导致失败

报错:[Err] 1118 - Row size too large (> 8126). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline. 解决方法:把表的引......

qimh
10分钟前
0
0
语法补漏

1.if...elif...else... 代码示例: test=10 if test>9: print(1) elif test>8: print(2) elif test>7: print(3) else: print('nothing') 输出代码: 1...

十年磨一剑3344
11分钟前
0
0
Python -re模块及正则表达式解析

传送门: https://blog.csdn.net/pipisorry/article/details/25909899 ps:上面文章中"命名分组"的语法格式不能执行。正确的如下: (?P<name>正则表达式) #name是一个合法的标识符 除了使用别名...

一口今心
18分钟前
0
0
mybatis中session.getMapper方法源码分析

0开始代码AuthorMapper mapper = session.getMapper(AuthorMapper.class); 1 DefaultSqlSession类 @Override public <T> T getMapper(Class<T> type) { //最后会去调用MapperRegistry.getMap......

writeademo
26分钟前
1
0
spring cloud zuul网关的作用

zuul一般有两大作用,1是类似于Nginx的网址重定向,但zuul的重定向的一般是整个spring cloud里在Eureka注册中心的模块. zuul: ignored-services: '*' sensitiveHeaders: routes: ...

算法之名
27分钟前
9
0
java按比例之原图生成缩略图

package com.wxp.test; import java.awt.Image; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileOutputStream; import javax.imageio.ImageIO; import sun.......

恋码之子
36分钟前
1
0
SpringCloud 微服务 (十五) 服务容错 Hystrix

壹 工作中的微服务架构,某个服务通常会被多个服务调用或者多层调用完成需求,如果某个服务不可用,导致一个系统功能不可用或者服务直接没用了的情况,这种情况称为雪崩效应 有A服务调用B服务,B服...

___大侠
38分钟前
1
0
Spring框架中的设计模式(五)

Spring框架中的设计模式(五) 通过以前的4篇文章,我们看到Spring采用了大量的关于创建和结构方面的设计模式。本文将描述属于行为方面的两种设计模式:命令和访问者。 前传: Spring框架中的...

瑞查德-Jack
41分钟前
1
0
解决phpstorm运行很卡问题!

phpStorm一旦达到这个临界值,所有智能提示、自动补全都失效了 这TM就很尴尬了,顿时感觉自己就是个废人了,纯手写代码跟便秘一样 众所周知phpStorm基于JAVA,那么这个内存限制肯定跟JAVA的虚...

sjcehui2010
44分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部