0

我正在试验 OpenXava 文件构造型和嵌入式类并发现一个奇怪的错误。首先,如果我在第一次保存之前创建了一条记录并附加了一堆文件,那么一切正常。但是,如果我首先创建一个记录(Temple),将嵌入记录(Library)中的所有内容留空,保存(保存成功,它说),然后返回编辑它,我收到以下消息:“Impossible to execute添加文件操作:在模型 Temple 中找不到成员 library.documents”

我无法通过谷歌找到任何有用的东西。

这是我做错了什么还是 OpenXava 库中的错误。

我正在使用:OpenXava 版本 5.1.1 Tomcat 随附:Apache Tomcat 版本 7.0.50 Oracle 11g

这是我的 Temple 和内部图书馆类:

package org.openxava.zen.model;

import javax.persistence.*;

import org.openxava.annotations.*;

@Entity
public class Temple 
{
    @Id @Column(length=3) @GeneratedValue @ReadOnly
    private int id;

    @Version
    private Integer version;

    @Column(length=50)
    private String name;

    @Stereotype("IMAGES_GALLERY")
    private String photos;

    @Column
    private String address;

    @Embedded
    private Library library;

    @Embeddable
    public static class Library
    {
        @Stereotype("FILES")
        @Column(length=32)
        private String documents;

        public Admittance getAdmittance() {
            return admittance;
        }

        public void setAdmittance(Admittance admittance) {
            this.admittance = admittance;
        }

        @Column
        private Admittance admittance;

        public enum Admittance {MEMBERS_ONLY, COMMUNITY, EVERYONE};

        public String getDocuments() 
        {
            return documents;
        }

        public void setDocuments(String documents) 
        {
            this.documents = documents;
        }
    }


    public Library getLibrary() {
        return library;
    }

    public void setLibrary(Library library) {
        this.library = library;
    }

    public Integer getVersion() {
        return version;
    }

    public void setVersion(Integer version) {
        this.version = version;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPhotos() {
        return photos;
    }

    public void setPhotos(String photos) {
        this.photos = photos;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }


    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

}

完整的堆栈跟踪:

2014 年 12 月 1 日下午 4:09:46 org.directwebremoting.util.CommonsLoggingOutput 信息信息:执行:Module.request() 2014 年 12 月 1 日下午 4:09:46 org.openxava.model.impl.MapFacadeBean 验证警告:警告!:未验证 Temple 的成员 library.documents:类型未知(属性、参考、收藏)2014 年 12 月 1 日下午 4:09:46 org.openxava.controller.ModuleManager manageRegularException 严重:在模型 Temple org 中找不到成员 library.documents .openxava.util.XavaException:在 org.openxava.model.impl.MapFacadeBean.convertSubmapsInObject(MapFacadeBean.java:1675) 在 org.openxava.model.impl.MapFacadeBean.setValues(MapFacadeBean. java:1337) 在 org.openxava.model.impl.MapFacadeBean.setValues(MapFacadeBean.java:198) 在 org.openxava.model.MapFacade.setValues(MapFacade.java:第 635 章:401) 在 org.apache.jasper.runtime.HttpJspBase 的 org.apache.jsp.xava.execute_jsp._jspService(execute_jsp.java:196) 的 org.openxava.controller.ModuleManager.execute(ModuleManager.java:358)。在 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432) 在 org.apache.jasper 的 javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 的服务(HttpJspBase.java:70) .servlet.JspServlet.serviceJspFile(JspServlet.java:390) 在 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) 在 javax.servlet.http.HttpServlet。service(HttpServlet.java:728) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache .catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749) 在 org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:605) 在 org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java :544) 在 org.openxava.web.dwr.Module.getURIAsStream(Module.java:205) 在 org.openxava.web.dwr 的 org.openxava.web.servlets.Servlets.getURIAsStream(Servlets.java:66)。在 sun.reflect.GeneratedMethodAccessor41.invoke(Unknown Source) 在 sun.reflect.DelegatingMethodAccessorImpl 的 Module.request(Module.java:64)。invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.directwebremoting.impl.ExecuteAjaxFilter.doFilter(ExecuteAjaxFilter.java:34) at org.directwebremoting.impl.DefaultRemoter $1.doFilter(DefaultRemoter.java:428) 在 org.directwebremoting.impl.DefaultRemoter.execute(DefaultRemoter.java:431) 在 org.directwebremoting.impl.DefaultRemoter.execute(DefaultRemoter.java:283) 在 org.directwebremoting.servlet .PlainCallHandler.handle(PlainCallHandler.java:52) 在 org.directwebremoting.servlet.UrlProcessor.handle(UrlProcessor.java:101) 在 org.directwebremoting.servlet.DwrServlet.doPost(DwrServlet.java:146) 在 javax.servlet。 http.HttpServlet.service(HttpServlet.java:647) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 在 org.apache。catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter. java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core .StandardWrapperValve.invoke(StandardWrapperValve.java:222) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 在 org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 在org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 在 org.org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) 中的 apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve. java:118) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:409) 在 org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1044) 在 org.apache.coyote.AbstractProtocol $AbstractConnectionHandler.process(AbstractProtocol.java:607) at org.apache.tomcat.util.net.JIoEndpoint $SocketProcessor.run(JIoEndpoint.java:315) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145 ) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 在 java.lang.Thread.run(Thread.java:744)catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java: 118) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:409) 在 org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1044) 在 org.apache.coyote.AbstractProtocol$AbstractConnectionHandler .process(AbstractProtocol.java:607) 在 org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 在 java.lang.Thread.run(Thread.java:744)catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java: 118) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:409) 在 org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1044) 在 org.apache.coyote.AbstractProtocol$AbstractConnectionHandler .process(AbstractProtocol.java:607) 在 org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 在 java.lang.Thread.run(Thread.java:744)ErrorReportValve.invoke(ErrorReportValve.java:100) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org .apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:409) 在 org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1044) 在 org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol .java:607) 在 org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util。 concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 在 java.lang.Thread.run(Thread.java:744)ErrorReportValve.invoke(ErrorReportValve.java:100) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org .apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:409) 在 org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1044) 在 org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol .java:607) 在 org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util。 concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 在 java.lang.Thread.run(Thread.java:744)在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 在 org.apache.catalina.core.Invoke(StandardEngineValve.java:118) 在 org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) 调用(ErrorReportValve.java:100) .catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:409) 在 org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1044) 在 org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java :607) 在 org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent。 ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 在 java.lang.Thread.run(Thread.java:744)在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 在 org.apache.catalina.core.Invoke(StandardEngineValve.java:118) 在 org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) 调用(ErrorReportValve.java:100) .catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:409) 在 org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1044) 在 org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java :607) 在 org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent。 ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 在 java.lang.Thread.run(Thread.java:744)Valves.AccessLogValve.invoke(AccessLogValve.java:953) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:409)在 org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1044) 在 org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607) 在 org.apache.tomcat.util.net.JIoEndpoint $SocketProcessor.run(JIoEndpoint.java:315) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 在 java. lang.Thread.run(Thread.java:744)Valves.AccessLogValve.invoke(AccessLogValve.java:953) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:409)在 org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1044) 在 org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607) 在 org.apache.tomcat.util.net.JIoEndpoint $SocketProcessor.run(JIoEndpoint.java:315) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 在 java. lang.Thread.run(Thread.java:744)在 org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1044) 在 org.apache.coyote.service(CoyoteAdapter.java:409) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:409) 调用(StandardEngineValve.java:118) .coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor .java:1145) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 在 java.lang.Thread.run(Thread.java:744)在 org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1044) 在 org.apache.coyote.service(CoyoteAdapter.java:409) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:409) 调用(StandardEngineValve.java:118) .coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor .java:1145) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 在 java.lang.Thread.run(Thread.java:744)1044)在 org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315) 在 java.util.concurrent .ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 在 java.lang.Thread.run(Thread.java:744)1044)在 org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315) 在 java.util.concurrent .ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 在 java.lang.Thread.run(Thread.java:744)

4

1 回答 1

0

此问题在 OpenXava 论坛中得到解决: https ://sourceforge.net/p/openxava/discussion/419690/thread/fde016f3/

于 2014-12-04T13:13:04.910 回答