- 浏览: 420207 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
zxjlwt:
学习了http://surenpi.com
java.lang.LinkageError解决办法。 -
zqb666kkk:
/**
*
* @param filepath
...
Java删除目录及目录下的所有文件 -
zqb666kkk:
f.exists() && f.isDirec ...
Java删除目录及目录下的所有文件 -
coldrain2014:
在线api文档 http://online.code1314. ...
JavaMail java.lang.NullPointerException -
timeroading1:
chxkyy 写道xx175194716 写道真佩服,把jar ...
Activiti 学习记录3 之Activiti源代码及默认h2数据库连接
问题提出:
平台:Richfaces,Jsf,Spring,Ejb3.0
- 页面文件:
<h:selectOneListbox size="1" value="#{coalDailyBackBean.currentEntity.coalDaily.coalTS}" converter="com.mycompany.CoalTransportStyleConverter"> <f:selectItems value="#{coalDailyBackBean.allTSs}"> </f:selectItems> </h:selectOneListbox>
coalTS是一个CoalTransportStyle的对象
allTSs是一个CoalTransportStyle的List
- JSF配置文件faces-config.xml:
<converter> <converter-id> com.mycompany.CoalTransportStyleConverter </converter-id> <converter-class> com.mycompany .parameter.plantinfo.web.converter.CoalTransportStyleConverter </converter-class> </converter>
CoalTransportStyle.java
@Entity @Table(name = "T_CoalTransportStyle") public class CoalTransportStyle implements Serializable { /** * */ private static final long serialVersionUID = -5090574246490412429L; private Long id; private String paraName; @Id @GeneratedValue(strategy=GenerationType.AUTO) public Long getId() { return id; } public void setId(Long id) { this.id = id; } @Column(unique=true,nullable=false) public String getParaName() { return paraName; } public void setParaName(String paraName) { this.paraName = paraName; } }
public class CoalTransportStyleConverter implements Converter { public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2) { CoalTransportStyle style = new CoalTransportStyle(); String strs[] = arg2.split(":"); style.setId(new Long(strs[0])); style.setParaName(strs[1]); return style; } public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) { CoalTransportStyle style = (CoalTransportStyle) arg2; return style.getId() + ":" + style.getParaName(); } }
定义了一个converter
- 后台支撑Bean:
/** * 获得所有的运输方式 * * @return the allTSs */ public List<SelectItem> getAllTSs() { allTSs = new ArrayList<SelectItem>(); List<CoalTransportStyle> list = coalTransportStyleService.queryAll( "paraName", true); for (CoalTransportStyle style : list) { allTSs.add(new SelectItem(style, style.getParaName())); } return allTSs; }
/** * @return the currentEntity */ public CoalDailyEntity getCurrentEntity() { if (getCoalDailyId() != null) { currentEntity = new CoalDailyEntity(); currentEntity.setPlant(plant); currentEntity.setT_Date(date);// 设置时间 currentEntity.setCoalDaily(coal); } return currentEntity; }
初始页面显示时,h:selectOneListbox显示没有问题,但是当数据提交时,就报了一个错:Validation Error: Value is not valid 上网找了半天也没找到答案,后来自己调试了一下。 - 当数据提交时,是调用了CoalTransportStyleConverter的getAsObject说明这个对象已经创建起来了。但是为什么还报这个错误呢?
- 于是我找了Messages_en.properties错误信息文件。
javax.faces.component.UISelectOne.INVALID={0}: Validation Error: Value is not valid
- 又找到UISelectOne的validateValue方法。
protected void validateValue(FacesContext context, Object value) { // Skip validation if it is not necessary super.validateValue(context, value); if (!isValid() || (value == null)) { return; } // Ensure that the value matches one of the available options boolean found = matchValue(value, new SelectItemsIterator(this)); // Enqueue an error message if an invalid value was specified if (!found) { FacesMessage message = MessageFactory.getMessage(context, INVALID_MESSAGE_ID, MessageFactory.getLabel(context, this)); context.addMessage(getClientId(context), message); setValid(false); } } // --------------------------------------------------------- Private Methods /** * <p>Return <code>true</code> if the specified value matches one of the * available options, performing a recursive search if if a * {@link SelectItemGroup} instance is detected.</p> * * @param value {@link UIComponent} value to be tested * @param items Iterator over the {@link SelectItem}s to be checked */ private boolean matchValue(Object value, Iterator items) { while (items.hasNext()) { SelectItem item = (SelectItem) items.next(); if (item instanceof SelectItemGroup) { SelectItem subitems[] = ((SelectItemGroup) item).getSelectItems(); if ((subitems != null) && (subitems.length > 0)) { if (matchValue(value, new ArrayIterator(subitems))) { return (true); } } } else { //Coerce the item value type before comparing values. Class type = value.getClass(); Object newValue; try { newValue = getFacesContext().getApplication(). getExpressionFactory().coerceToType(item.getValue(), type); } catch (ELException ele) { newValue = item.getValue(); } catch (IllegalArgumentException iae) { // If coerceToType fails, per the docs it should throw // an ELException, however, GF 9.0 and 9.0u1 will throw // an IllegalArgumentException instead (see GF issue 1527). newValue = item.getValue(); } if (value.equals (newValue)) { return (true); } } } return (false); }
这里调用了equals方法,结果是不行,所以抛出了这个异常。 - 重写CoalTransportStype的equals方法即可:
@Entity @Table(name = "T_CoalTransportStyle") public class CoalTransportStyle implements Serializable { /** * */ private static final long serialVersionUID = -5090574246490412429L; private Long id; private String paraName; @Id @GeneratedValue(strategy=GenerationType.AUTO) public Long getId() { return id; } public void setId(Long id) { this.id = id; } @Column(unique=true,nullable=false) public String getParaName() { return paraName; } public void setParaName(String paraName) { this.paraName = paraName; } public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; final CoalTransportStyle other = (CoalTransportStyle) obj; if (id == null) { if (other.id != null) return false; } else if (!id.equals(other.id)) return false; if (paraName == null) { if (other.paraName != null) return false; } else if (!paraName.equals(other.paraName)) return false; return true; } }
发表评论
-
richfaces ajax特性的一点小提示(为什么数据传不到后台去?)
2008-06-25 11:22 2109问题描述: 页面文件: <h:outputText va ... -
<f:selectItems>空值问题
2008-06-24 11:49 3062报错的代码: java.lang.NullPointerExc ... -
richfaces3.1.2升级到3.2.1中遇到的问题。
2008-06-05 11:55 14261。org.richfaces.component.UIDat ... -
rich:modalPanel 与 form的关系
2008-05-27 17:00 1742<rich:modalPanel>不能放在form ... -
richfaces3.1.2 modalPanel文档的一点小bug
2008-05-27 14:57 2775在richfaces_reference.pdf P298 原 ... -
<f:convertDateTime> 时间显示不对问题
2008-04-21 10:49 7357在输出日期时,在Java里java.util.Date类型的对 ... -
xhtml下用jsp标签方法
2008-04-16 13:41 25681- use f:verbatim jsf tag 2- u ... -
JSF VS Tapestry 全面比较
2008-04-16 13:26 2128目 前应用很广泛而且也很成熟的Struts应用开发框架, ... -
RichFaces <a4j:commandButton>传参数
2008-03-27 17:00 5555转自:http://livedemo.exadel.com/r ... -
jsf参数传递2
2008-03-27 12:48 7为了避免使用Session的一 ... -
JSF本地化过程中出现乱码问题解决
2008-03-26 13:05 2901JSF本地化的基本配置。首先要在faces-config.xm ... -
augmentIdReference 错误
2008-03-24 14:08 1243把HtmlMessage写在后台的BackBean如下所示: ... -
如何创建自定义验证器?
2008-03-21 14:46 1677下面是一个email验证器的示例: EmailValida ... -
JSF 生命周期总结
2008-02-01 08:53 3260当一个http 请求来临的时候,首先会调用FacesServl ... -
JSF Id冲突解决办法
2008-02-01 08:46 1882在jsf中,页面组件如果是由页面标签与后台的程序一起生成的话, ... -
Ajax4jsf 和 <h:message> 一起使用时候的问题
2008-01-21 10:23 3415如果在页面中使用了<a4j:commandButton& ... -
jsf页面参数的传递及加载数据(转)
2008-01-16 16:29 4229转自:http://www.blogjava.net/ ... -
richfaces调试方法
2008-01-14 17:43 1820用到<a4j:log>这个标签示例如下:<a ... -
JSF+Facelets+Tomahawk的笔记(转贴)
2008-01-08 16:23 1518转自:http://www.cnblogs.com/phoen ... -
facelets.DEVELOPMENT作用。
2008-01-07 18:21 1828facelets.DEVELOPMENT 不是必需的,但是它允 ...
相关推荐
2. **验证规则注解(Validation Rules Annotations)**:JSF支持JSR 303/349 Bean Validation,允许我们在模型类的属性上使用注解来定义验证规则,例如`@NotNull`, `@Size`, `@Pattern`等。 3. ** faces-config.xml...
在JSF(JavaServer Faces)2.0中,自定义`<h:head>`标签是一项重要的功能,它允许开发者对页面头部区域进行精细化控制,包括引入CSS样式表、JavaScript脚本和其他元信息。这一特性极大地提高了应用的灵活性和可维护...
**JSF(JavaServer Faces)** 是一个Java平台上的Web应用程序框架,用于构建用户界面。它简化了开发人员创建交互式、数据驱动的Web应用程序的过程。JSF提供了一种组件模型,允许开发者通过声明性方式来构建用户界面...
JSF-1_1-API.chm
JSF开发所必需包:花了很长时间才收集好,很费时,现已收集好,何不分享给大家,让大家节省时间做点有意义的事情呢?呵呵。。。已在附件供大家下载,若是你所需要的东西,那就请投个票、说句鼓励的话,我就满足了。 ...
**JSF PrimeFaces DataTable 深入解析** PrimeFaces 是一个流行且功能丰富的JavaServer Faces (JSF)组件库,提供了许多用户界面组件,其中包括`DataTable`。在JSF应用中,`DataTable`是一个非常重要的组件,用于...
本人用的是Myeclipse7.0+J2EE5.0+JSF开发,配置myfaces各种jar,包括上传.考到lib下就可以.哪里不明加我QQ问我 200808006
**Maven包JSF详解** JSF(JavaServer Faces)是Java平台上的一个用于构建用户界面的组件模型框架。它提供了用于开发Web应用程序的UI组件、事件处理和数据绑定机制。Maven则是一个项目管理工具,它可以帮助Java...
**JSF Primefaces 教程概述** JSF (JavaServer Faces) 是一个用于构建Web应用程序的Java框架,它简化了用户界面组件的开发和管理。而Primefaces是JSF的一个热门扩展库,提供了丰富的UI组件和强大的功能,使得开发者...
JSF的学习入门知识教程,里面有例子还有各个标签的使用及属性介绍
最新的JSF版本(如JSF 3.0)引入了更多新特性,如响应式设计支持、改进的错误处理和增强的类型安全EL。 总结来说,这份“JSF很全面的帮助文档”将引导开发者深入理解JSF框架的各个方面,从基础概念到高级特性,包括...
### JSF 2.0 用户输入验证详解 #### 概述 JSF(JavaServer Faces)2.0作为Java EE平台的一部分,在Web应用程序开发中扮演着重要的角色。它提供了丰富的功能来简化用户界面的设计和实现过程。其中一项关键功能就是对...
"JSF实战教程中文版" 本教程主要讲解JavaServer Faces(JSF)技术的实战应用,包括JSF的基础知识、核心概念、实践经验等。下面是从给定的文件中生成的相关知识点: 一、JSF概述 * JSF是什么?:JSF是一种基于Java...
在JavaServer Faces (JSF)框架中,PrimeFaces是一个非常流行的UI组件库,它提供了许多增强用户界面的功能。其中,`<p:fileUpload>`组件是用于实现文件上传功能的一个重要元素。本篇文章将深入探讨如何使用PrimeFaces...
目录 此示例应用程序仅展示了如何通过针对执行 JSF 请求。 运行它 mvn gatling:execute ... val jsfViewStateCheck = css( " input[name='javax.faces.ViewState'] " , " value " ) .saveAs( " viewState " )
1. **The function XXX must be used with a prefix when a default namespace is not specified** - **异常解释**:此异常提示表示在 XML 文件(通常是 JSF 页面或配置文件)中使用了未指定前缀的函数或方法调用...
在JavaScript Server Faces (JSF) 中,`radiobutton`组件是用于创建单选按钮的,它们通常用于在一组互斥选项中让用户选择一个。在这个"jsf,radiobutton分组示例"中,我们将深入探讨如何在JSF应用中有效地使用`<h:...
JSF组件,允许对JSF应用程序使用v1.4.2编辑器。 特征 开箱即用的支持162种模式 开箱即用,支持38种模式 emacs和vim的按键绑定 将Ace会话保留到JSF支持bean: 代码折叠 滚动 设定选项 支持 用法 在facelets页面中,...
### JSF介绍与技术概述 #### 一、JSF概览 JSF(JavaServer Faces)是一种基于Java的标准Web应用程序框架,它为开发者提供了一种简单的方式来构建动态且交互式的Web应用。本节将深入探讨JSF的核心概念、特点以及与...