-
seam中复合主键调用问题5
在表form中有三个主键:formid,tabid,operaid
要在页面中可以按照这三个主键中的任意一个查询表中的信息,程序执行后报错:javax.el.PropertyNotFoundException: /FormList.xhtml @23,75 value="#{formList.form.formid}": Property 'formid' not found on type app.ejb.domain.ProjectsManager_SEAM.model.Form
现在有两个实体类,分别是Form.java和Form.java
类定义如下:package app.ejb.domain.ProjectsManager_SEAM.model; // Generated 2008/07/03 12:51:58 by Hibernate Tools 3.2.0.b10 import java.util.Date; import javax.persistence.AttributeOverride; import javax.persistence.AttributeOverrides; import javax.persistence.Column; import javax.persistence.EmbeddedId; import javax.persistence.Entity; import javax.persistence.Table; import javax.persistence.Version; import org.hibernate.validator.Length; import org.hibernate.validator.NotNull; /** * Form generated by hbm2java */ @Entity @Table(name = "form", catalog = "projectsmanager") public class Form implements java.io.Serializable { private FormId id; private Date timestamp; private String formname; private String tabname; private char delflg; private String lastupdateuser; private Date lastupdatetime; private String lastupdatehost; public Form() { } public Form(FormId id, String formname) { this.id = id; this.formname = formname; } public Form(FormId id, String formname, String tabname, char delflg, String lastupdateuser, Date lastupdatetime, String lastupdatehost) { this.id = id; this.formname = formname; this.tabname = tabname; this.delflg = delflg; this.lastupdateuser = lastupdateuser; this.lastupdatetime = lastupdatetime; this.lastupdatehost = lastupdatehost; } @EmbeddedId @AttributeOverrides({ @AttributeOverride(name = "formid", column = @Column(name = "FORMID", nullable = false, length = 8)), @AttributeOverride(name = "tabid", column = @Column(name = "TABID", nullable = false, length = 8)), @AttributeOverride(name = "operaid", column = @Column(name = "OPERAID", nullable = false, length = 4))}) @NotNull public FormId getId() { return this.id; } public void setId(FormId id) { this.id = id; } @Version @Column(name = "TIMESTAMP", nullable = false, length = 0) @NotNull public Date getTimestamp() { return this.timestamp; } public void setTimestamp(Date timestamp) { this.timestamp = timestamp; } @Column(name = "FORMNAME", nullable = false, length = 40) @NotNull @Length(max = 40) public String getFormname() { return this.formname; } public void setFormname(String formname) { this.formname = formname; } @Column(name = "TABNAME", length = 30) @Length(max = 30) public String getTabname() { return this.tabname; } public void setTabname(String tabname) { this.tabname = tabname; } @Column(name = "DELFLG", length = 1) @Length(max = 1) public char getDelflg() { return this.delflg; } public void setDelflg(char delflg) { this.delflg = delflg; } @Column(name = "LASTUPDATEUSER", length = 10) @Length(max = 10) public String getLastupdateuser() { return this.lastupdateuser; } public void setLastupdateuser(String lastupdateuser) { this.lastupdateuser = lastupdateuser; } @Column(name = "LASTUPDATETIME", length = 0) public Date getLastupdatetime() { return this.lastupdatetime; } public void setLastupdatetime(Date lastupdatetime) { this.lastupdatetime = lastupdatetime; } @Column(name = "LASTUPDATEHOST", length = 30) @Length(max = 30) public String getLastupdatehost() { return this.lastupdatehost; } public void setLastupdatehost(String lastupdatehost) { this.lastupdatehost = lastupdatehost; } }
package app.ejb.domain.ProjectsManager_SEAM.model; // Generated 2008/07/03 12:51:58 by Hibernate Tools 3.2.0.b10 import javax.persistence.Column; import javax.persistence.Embeddable; import org.hibernate.validator.Length; import org.hibernate.validator.NotNull; /** * FormId generated by hbm2java */ @Embeddable public class FormId implements java.io.Serializable { private String formid; private String tabid; private String operaid; public FormId() { } public FormId(String formid, String tabid, String operaid) { this.formid = formid; this.tabid = tabid; this.operaid = operaid; } @Column(name = "FORMID", nullable = false, length = 8) @NotNull @Length(max = 8) public String getFormid() { return this.formid; } public void setFormid(String formid) { this.formid = formid; } @Column(name = "TABID", nullable = false, length = 8) @NotNull @Length(max = 8) public String getTabid() { return this.tabid; } public void setTabid(String tabid) { this.tabid = tabid; } @Column(name = "OPERAID", nullable = false, length = 4) @NotNull @Length(max = 4) public String getOperaid() { return this.operaid; } public void setOperaid(String operaid) { this.operaid = operaid; } public boolean equals(Object other) { if ((this == other)) return true; if ((other == null)) return false; if (!(other instanceof FormId)) return false; FormId castOther = (FormId) other; return ((this.getFormid() == castOther.getFormid()) || (this .getFormid() != null && castOther.getFormid() != null && this.getFormid().equals( castOther.getFormid()))) && ((this.getTabid() == castOther.getTabid()) || (this .getTabid() != null && castOther.getTabid() != null && this.getTabid() .equals(castOther.getTabid()))) && ((this.getOperaid() == castOther.getOperaid()) || (this .getOperaid() != null && castOther.getOperaid() != null && this.getOperaid() .equals(castOther.getOperaid()))); } public int hashCode() { int result = 17; result = 37 * result + (getFormid() == null ? 0 : this.getFormid().hashCode()); result = 37 * result + (getTabid() == null ? 0 : this.getTabid().hashCode()); result = 37 * result + (getOperaid() == null ? 0 : this.getOperaid().hashCode()); return result; } }
下面是页面显示代码:<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:s="http://jboss.com/products/seam/taglib" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:rich="http://richfaces.org/rich" template="layout/template.xhtml" xmlns:a4j="http://richfaces.org/a4j"> <ui:define name="body"> <h:messages globalOnly="true" styleClass="message" id="globalMessages"/> <h:form id="formSearch" styleClass="edit"> <rich:simpleTogglePanel label="#{messages.comm_search}" switchType="ajax"> <s:decorate template="layout/display.xhtml"> <ui:define name="label">#{messages.form_formid}</ui:define> <h:inputText id="formid" value="#{formList.form.formid}"/> </s:decorate> <s:decorate template="layout/display.xhtml"> <ui:define name="label">#{messages.form_formname}</ui:define> <h:inputText id="formname" value="#{formList.form.formname}"/> </s:decorate> <s:decorate template="layout/display.xhtml"> <ui:define name="label">#{messages.form_tabname}</ui:define> <h:inputText id="tabname" value="#{formList.form.tabname}"/> </s:decorate> </rich:simpleTogglePanel> <div class="actionButtons"> <h:commandButton id="search" value="#{messages.comm_search}" action="/FormList.xhtml"/> </div> </h:form> ...... </ui:define> </ui:composition>
以下是配置文件:<?xml version="1.0" encoding="UTF-8"?> <page xmlns="http://jboss.com/products/seam/pages" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jboss.com/products/seam/pages http://jboss.com/products/seam/pages-2.0.xsd"> <param name="firstResult" value="#{formList.firstResult}"/> <param name="order" value="#{formList.order}"/> <param name="fromList"/> <param name="formid" value="#{formList.form.id.formid}"/> <param name="tabid" value="#{formList.form.id.tabid}"/> <param name="operaid" value="#{formList.form.id.operaid}"/> <param name="formname" value="#{formList.form.formname}"/> <param name="tabname" value="#{formList.form.tabname}"/> </page>
2008年7月31日 14:46
目前还没有答案
相关推荐
- **工作原理**:此示例展示了如何使用 SEAM 的工作空间管理功能来实现问题跟踪系统。 ##### 1.9 结合Seam和Hibernate的示例:Hibernate预订系统 - **代码分析**:利用 SEAM 和 Hibernate 实现宾馆预订系统。 - *...
JFreeChart-1.0.5-Ch.chm提供了详细教程和示例,帮助开发者利用JFreeChart在Seam应用中展示数据。 **7. ANTLR** ANTLR 是一个强大的解析器生成器,用于读取、处理、执行或翻译结构化文本或二进制文件。ANTLR中文...
seam 中文文档 pdf 格式 JSF+EJB3.0快速开发框架Seam的中文版向导。。。
Seam的主要目标是减少开发中的样板代码,提高生产力,同时保持灵活性和可扩展性。 **二、Seam核心概念** 1. **组件(Components)**: Seam的核心是组件模型,它允许开发者定义和管理应用中的对象。组件可以是简单的...
下面我们将详细讨论Seam中的注解以及与之相关的标签。 1. **Seam注解** - `@Name`: 这是Seam的核心注解,用于为组件定义一个唯一的名字。这个名字可以在JSF视图、表达式语言(EL)或者Seam的事件系统中引用。 -...
在这个“seam需要的jar包”压缩包中,包含了运行和开发Seam应用程序所需的各种库文件。 首先,Seam框架的核心依赖于JSF,这是Java EE中的一个用户界面组件框架,用于构建交互式Web应用。JSF提供了模型-视图-控制器...
7. **国际化与本地化**:Seam支持多语言环境,对于中英文双语版本的书籍,这为开发者提供了跨越语言障碍的便利,帮助全球的开发者理解和使用Seam框架。 8. **测试支持**:Seam提供了一套完整的测试工具,包括单元...
- **生命周期方法**:Seam 组件在其生命周期的不同阶段可以调用不同的方法,这些方法对于初始化、清理等工作非常重要。 #### 七、总结 通过上述章节的学习,读者不仅能够掌握 Seam 的基本使用方法,还能够深入了解...
seam下一代web开发框架
- **组件模型**:Seam中的组件是构成应用的基本单元,它们封装了业务逻辑,并且可以通过声明式的方式进行配置。 - **会话管理**:Seam提供了强大的会话管理机制,支持不同类型的会话,如对话会话、持久化会话等。 - ...
Seam中的组件系统基于CDI(Contexts and Dependency Injection),这是一个Java EE规范,负责管理对象的生命周期和依赖注入。CDI允许开发者声明依赖关系,而无需手动创建和管理对象。通过注解,你可以告诉Seam何时、...
接下来,我们来看看Seam中常见的注解: 1. **@Name**:用于标识Seam组件的名称,相当于JSF中的后台Bean,无需在`faces-config.xml`中单独配置ManagedBean。 2. **@Scope**:定义组件的作用域,如`Page`, `Event`, ...
整理自jboss seam 中文站,压缩为chm格式,便于广大jboss seam爱好者阅读,所有版权归jboss seam中文站所有。
RichFaces是Seam中的一个增强JSF功能的库,提供了丰富的AJAX支持;JBoss是Red Hat公司开发的应用服务器,它支持并推荐使用Seam框架。 在实际开发中,开发者可以通过这些资源学习如何使用Seam进行组件注入、依赖管理...
在Seam中,一切皆组件,无论你是倾向于采用分层架构(如J2EE)还是简单的架构,都可以得到支持。组件可以是无状态或有状态的,有状态的组件可与多种预定义上下文关联,如业务流程上下文或方法上下文,这为Seam赋予了...
- 解释了如何在Seam中实现推送式的服务模式。 ##### 1.11 在JBoss中用JSF1.2RI运行Seam的范例 - **环境搭建**: - 介绍了如何在JBoss AS和JSF1.2 RI环境中部署和运行Seam应用。 #### 二、使用Seam-gen起步 - **...
6. **国际化与本地化**:学习如何在Seam项目中实现多语言支持。 7. **测试与调试**:掌握Seam的测试工具和策略,确保代码质量。 8. **Seam组件**:了解如Conversation、Transactions、邮件服务等Seam内置组件的使用...
Seam和Hibernate是两个在Java开发中非常重要的框架。Seam是一个全面的、集成的Java EE框架,主要用于简化企业级应用的开发,而Hibernate则是一个强大的对象关系映射(ORM)框架,它允许开发者用Java对象来操作数据库...