文档章节

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

码上中国博客
 码上中国博客
发布于 2015/03/03 09:42
字数 1117
阅读 145
收藏 1

由于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
Hibernate ORM 5.3.5.Final 发布,将被用于 WildFly 14

Hibernate ORM 5.3.5.Final 已发布,这将是 WildFly 14 中所包含的版本。 What’s new Bug 修复 HHH-12875 and HHH-12882 - Various fixes regarding support HHH-12871 - Metamodel contai......

王练
08/16
0
0
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

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 懒床是对冬天最起码的尊重

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @瘟神灬念 :分享daniwellP/桃音モモ的单曲《Nyan Cat》 《Nyan Cat》- daniwellP/桃音モモ 手机党少年们想听歌,请使劲儿戳(这里) @巴拉迪...

小小编辑
24分钟前
2
0
码云项目100,水一发

简单回顾一下: 早期构想最多的,是希望能将PHP一些类和编码分区做得更细,所以很多尝试。但不得不说,PHP的功能过于单一,是的,也许写C/C++扩展,可以解决问题,那我为什么不用C#或者Golan...

曾建凯
今天
3
0
Spring应用学习——AOP

1. AOP 1. AOP:即面向切面编程,采用横向抽取机制,取代了传统的继承体系的重复代码问题,如下图所示,性能监控、日志记录等代码围绕业务逻辑代码,而这部分代码是一个高度重复的代码,也就...

江左煤郎
今天
4
0
eclipse的版本

Eclipse各版本代号一览表 Eclipse的设计思想是:一切皆插件。Eclipse核心很小,其它所有功能都以插件的形式附加于Eclipse核心之上。 Eclipse基本内核包括:图形API(SWT/Jface),Java开发环...

mdoo
今天
3
0
SpringBoot源码:启动过程分析(一)

本文主要分析 SpringBoot 的启动过程。 SpringBoot的版本为:2.1.0 release,最新版本。 一.时序图 还是老套路,先把分析过程的时序图摆出来:时序图-SpringBoot2.10启动分析 二.源码分析 首...

Jacktanger
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部