我有其使用JSF&I具有EJB模块太做了web项目。 我在表单中输入一些数据和试着通过会话bean来保存这些数据到数据库。

的步骤的顺序如下。

1)用户打开的屏幕与表单,点击 2)他填满了数据结果的表单字段 3)在点击保存按钮点击 4)管理的bean捕获所有所输入的值与将其添加到ArrayList(含有实体bean。下面示出)

for(String tagName : formTagNames){ // For all the tag names in the FORM
 String value = request.getParameter(tagName); // Get the value of the field
 myArrayList.add(new DynamicForm(tagName, value)); // Create a bean & add to list
}

5)然后的 myArrayList 被发送到持久性EJB模块。 (我已经正确完成的映射太)

@EJB(name="DynamicFormFacadeLocal", mappedName="DynamicFormFacade/local")
private static DynamicFormFacadeLocal dynamicFormFacadeLocal;  

// Send it to EJB module for persistence
dynamicFormFacadeLocal.addDynamicFormFields(myArrayList);  

6)当我到会话bean&通过尝试迭代的 myArrayList

public Integer addDynamicFormFields(ArrayList<DynamicForm> formDetailsList) {
 if(formDetailsList == null || formDetailsList.isEmpty()) return 0;

 setupResources(); // Setting up all necessary connections & stuff
 int count = 0;
 try{
     entityTransaction.begin();
     for(DynamicForm form : formDetailsList){
  entityManager.persist(form);
  count++;
     }
     entityTransaction.commit();
 }
 catch(Exception e){
     e.printStackTrace();
     entityTransaction.rollback();
 }
 finally{
     cleanupResources(); // Cleanup all connections & resources
 }

 return count;
    }

7),但它给了我一个ClassCastException&我不明白为什么.. !! :(

18:17:42,210 INFO  [org.hibernate.impl.SessionFactoryImpl] building session factory
18:17:42,214 INFO  [org.hibernate.impl.SessionFactoryObjectFactory] Not binding factory to JNDI, no JNDI name configured
18:17:42,219 ERROR [STDERR] java.lang.ClassCastException: com.test.dynamiform.beans.entity.DynamicForm cannot be cast to com.test.dynamiform.beans.entity.DynamicForm
18:17:42,219 ERROR [STDERR]  at com.test.dynamiform.beans.session.DynamicFormFacade.addDynamicFormFields(DynamicFormFacade.java:32)
18:17:42,219 ERROR [STDERR]  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
18:17:42,219 ERROR [STDERR]  at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
18:17:42,219 ERROR [STDERR]  at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
18:17:42,219 ERROR [STDERR]  at java.lang.reflect.Method.invoke(Unknown Source)
18:17:42,220 ERROR [STDERR]  at org.jboss.aop.joinpoint.MethodInvocation.invokeTarget(MethodInvocation.java:122)
.... etc

有人可以请帮我在这一个.. ???点击 我完全失去了这里,我要送与迭代对象相同类型...:(

在此先感谢。结果 Asela。

有帮助吗?

解决方案

您是在这个被称为“类加载器地狱”。

类型的对象的取决于类以及还有加载它的类装入器。

您将有该类部署在服务器的两个副本,也许一个在Web应用程序中,一个在EJB和不同的代码位从不同的类加载器拿起类。

从该Web App中的一个,安排的事情让你的Web应用程序和EJB来自同一个地方加载shaed类 - 经常有在EJB类是最好的选择。

然而,我不喜欢的EJB“知道”关于表单对象,使用简单的DTO类可以是清洁器,如果相当烦人。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top