相关疑难解决方法(0)

无法从JSF2访问延迟注释但初始化的hibernate集合

我在称为事件和艺术家的两个实体之间存在多对多关系,两者都注释为延迟加载.当我加载一个艺术家时,我会初始化它的事件,因为会话将在之后关闭

Hibernate.initialize(artist.getEvents());
Run Code Online (Sandbox Code Playgroud)

纯Java中的测试工作正常,之后我可以访问事件及其属性.

但是在显示结果的.xhtml页面中,我只能访问艺术家的属性并测试是否有任何可用事件,Artist是支持bean,getData()返回Artist,以下行仍然有效:

<h:outputText value="No events available" rendered="#{empty artist.data.events}"/>
Run Code Online (Sandbox Code Playgroud)

但是当我想使用dataTable访问事件的属性时

<h:dataTable value="#{artist.data.events}" var="event" rendered="#{not empty artist.data.events}">
  <h:column>
    <h:outputText value="#{event.title}"/>
  </h:column>
</h:dataTable>
Run Code Online (Sandbox Code Playgroud)

我得到了followig例外:

/artist.xhtml @48,63 value="#{event.title}": The class 'org.hibernate.collection.PersistentSet' does not have the property 'title'.
Run Code Online (Sandbox Code Playgroud)

我的第一个想法是Hibernate的初始化方法不能与JSF2一起使用,但是当我将FetchType从LAZY更改为EAGER时,我最终得到相同的结果.

Event类看起来像这样,为简洁起见,我只包含与title属性相关的部分:

@Entity()
@Table(name="Events")
@SequenceGenerator(name="events_id", sequenceName="event_seq", initialValue=1, allocationSize=1)
public class EventData implements Serializable {

    private String title;
    // other private variables

    public EventData() {}

    public EventData(String title, ...) {
        this.title = title;
        // ...
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String …
Run Code Online (Sandbox Code Playgroud)

java jsf hibernate jsf-2

2
推荐指数
1
解决办法
2949
查看次数

Mojarra 2.1.0 - FCS不能与tomcat 7一起使用

我使用JSF 2.1(Mojarra 2.1.0 - FCS)与tomcat 7如下:

<dependency>
 <groupId>com.sun.faces</groupId>
 <artifactId>jsf-api</artifactId>
 <version>2.1.0-b11</version>
 <scope>compile</scope>
 </dependency>

 <dependency>
 <groupId>com.sun.faces</groupId>
 <artifactId>jsf-impl</artifactId>
 <version>2.1.0-b11</version>
 <scope>compile</scope>
 </dependency>
Run Code Online (Sandbox Code Playgroud)

当我试图在tomcat 7上运行它时,我得到以下异常:

java.lang.InstantiationException: com.sun.faces.application.ServletContextSensitiveSingletonStore
    at java.lang.Class.newInstance0(Class.java:340)
    at java.lang.Class.newInstance(Class.java:308)
    at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:118)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4268)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4771)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:138)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:785)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:763)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:558)
    at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:674)
    at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:599)
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:538)
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1390)
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:355)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:89)
    at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:312)
    at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:292)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:998)
    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:772)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:138)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:990)
    at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:275)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:138)
    at org.apache.catalina.core.StandardService.startInternal(StandardService.java:424)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:138)
    at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:648)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:138)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:576) …
Run Code Online (Sandbox Code Playgroud)

java-ee jsf-2 tomcat7

1
推荐指数
1
解决办法
4511
查看次数

标签 统计

jsf-2 ×2

hibernate ×1

java ×1

java-ee ×1

jsf ×1

tomcat7 ×1