- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我创建了一个 Web 应用程序,它具有使用 JSF 技术的 createBook.xhtml
并且它使用托管 Bean。在此页面中,用户必须在输入字段中填写所需信息,然后点击提交按钮。然后应使用 doCreateBook()
方法将此信息保存到数据库中。我为此 Web 应用程序使用 Tomcat 7.0 服务器。
让我们先从收到的错误消息开始,它是:
javax.naming.NameNotFoundException:名称 [com.mysite.bookecommerce.beans.BookController/bookEJB] 未在此上下文中绑定(bind)。无法找到 [com.mysite.bookecommerce.beans.BookController]。
BookController 是 EJB,其代码是:
package com.mysite.bookecommerce.beans;
import java.io.Serializable;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import com.mysite.bookecommerce.entities.Book;
@ManagedBean(name = "BookController")
@RequestScoped
public class BookController implements Serializable {
private static final long serialVersionUID = 1L;
@EJB
private BookEJB bookEJB;
private Book book = new Book();
public String doCreateBook() throws Exception{
book = bookEJB.createBook(book);
return "bookCreationSuccessful.xhtml";
}
public void doDeleteBook() throws Exception{
bookEJB.deleteBook(book);
}
public void doUpdateBook() throws Exception {
book = bookEJB.updateBook(book);
}
public BookController() {
super();
}
}
BookEJB 类是:
package com.mysite.bookecommerce.beans;
import java.util.List;
import javax.ejb.Stateful;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.PersistenceContextType;
import javax.persistence.Query;
import com.mysite.bookecommerce.entities.Book;
@Stateful
public class BookEJB {
@PersistenceContext(unitName = "BookECommercePU", type = PersistenceContextType.EXTENDED)
private EntityManager em;
public Book createBook(Book book) throws Exception {
em.persist(book);
return book;
}
public void deleteBook(Book book) throws Exception {
em.remove(book);
}
public Book updateBook(Book book) throws Exception {
em.merge(book);
return book;
}
@SuppressWarnings("unchecked")
public List<Book> getBooks() throws Exception {
Query query = em.createQuery("SELECT b from Book AS b");
return query.getResultList();
}
}
书是实体类,代码是:
@Entity
@Table(name = "BOOKS")
public class Book {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long ID;
@Column(nullable = false)
private String name;
@Column(nullable = false, length = 2000)
private String description;
@Length(max = 10)
@Column(nullable = false)
private int isbn10;
@Length(max = 14)
private String isbn13;
@Column(nullable = false)
private String author;
private String publisher;
private int publishYear;
@Column(nullable = false)
private int numberOfPages;
@Column(nullable = false)
private double price;
private boolean illustrations;
private String dimension;
private double weight;
private int quantity;
//getters and setters
还有faces-config.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<faces-config
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
version="2.0">
<managed-bean>
<managed-bean-name>BookController</managed-bean-name>
<managed-bean-class>com.mysite.bookecommerce.beans.BookController</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
最后是 web.xml 代码:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>BookECommerce</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.faces</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
<context-param>
<param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
<param-value>resources.application</param-value>
</context-param>
<context-param>
<description>State saving method: 'client' or 'server' (=default). See JSF Specification 2.5.2</description>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
</context-param>
<context-param>
<param-name>org.apache.myfaces.ALLOW_JAVASCRIPT</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>org.apache.myfaces.PRETTY_HTML</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>org.apache.myfaces.DETECT_JAVASCRIPT</param-name>
<param-value>false</param-value>
</context-param>
<context-param>
<param-name>org.apache.myfaces.AUTO_SCROLL</param-name>
<param-value>true</param-value>
</context-param>
<listener>
<listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
</listener>
问题似乎是我的 Web 应用程序没有找到 BookController EJB。我该如何解决这个问题?我读到必须将它添加到 faces-config.xml 文件中,但我已经添加了它,但仍然出现此错误。
请注意,我从 Book 实体类中提取了所有导入行,因为它会使代码片段变长。
最佳答案
这里有几点需要注意:
CDI 和 EJB 不适用于普通的 Tomcat,因为 Tomcat 只是一个 servlet 容器,而不是真正的 Java EE 应用服务器,如 Glassfish或 JBoss .在 this question你会发现更多细节。
如果您真的想使用 CDI,则必须使用 javax.enterprise.context
包中的注释(例如 javax.enterprise.context.RequestScoped
).
faces-config.xml
中的 bean 声明在 JSF 2+ 中是可选的。
关于jsf - javax.naming.NameNotFoundException : Name [attribute name] is not bound in this Context. 无法找到 [类名],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19201602/
这个问题在这里已经有了答案: Different ways of loading a file as an InputStream (6 个答案) 关闭 8 年前。 在我的 gradle java
给定一个 User 类: class User end 我想使用 .class_eval 定义一个新常量.所以: User.class_eval { AVOCADO = 'fruit' } 如果我尝试
这可能听起来很奇怪,但我正在开发一个需要查找 div 内的元素或 div 本身的插件。 脚本根据用户选择查找元素,但内容(包括标记)是可变的。因此脚本将按如下方式查找元素: $('.block').f
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 7 年前。 Improve th
我需要在按我自己的函数排序的对的多集中查找并删除一个值。显然, .find 总是将迭代器返回到末尾,而不是返回到搜索到的值。有小费吗?这是函数: struct cmp { bool operato
求助!我将如何通过遍历查看字符并计算有效字符出现之前的下划线数量来查找和删除前导下划线。以及从字符串末尾向后迭代以查找任何尾随下划线。 我可以使用下面的方法来删除下划线,但是如何迭代才能找到下划线。
如果你在 $(xml) 中有下面的 xml,你会变得懒惰: $(xml).find("animal").find("dog").find("beagle").text() 在 jQuery 中是否有类
你如何找到4个文件的交集? 我用了grep -Fx -f 1.txt 2.txt 3.txt 4.txt ,但它似乎只适用于 2 个文件。同样comm -12 1.txt 2.txt无法扩展为 4 个
我已经完成了标记的姿势估计并获得了 rvec 和 tvec 值。我不知道如何找到它的中心,因为我需要绘制一个需要中心值的圆柱体。 我该怎么做? 最佳答案 标记的 tvec 是标记从原点的平移 (x,y
我有一个任务,我需要找到 2 个单链接(单对单)列表的交集。我还必须为 2 个双向链接(双重 vs 双重)列表执行此操作: 对于单链表,我使用 mergeSort() 对两个列表进行排序,然后逐项比较
我是 R 的新手,我有一个 100x100 的方阵。我想找到这个矩阵的最大特征值。我试过了 is.indefinite(x) 但是它写 is.indefinite(x) : argument x is
您好,我是 svg 和 JavaScript 的新手,当鼠标位于 svg 上方时,我试图使一些 svg 元素弹出(通过缩放),反之亦然,当鼠标离开 svg 元素时。 我已经能够通过使用转换使 svg
我正在尝试为 scala 项目编写一个类,但在多个地方使用 class、def、while 等关键字出现此错误。 它发生在这样的地方: var continue = true while (conti
我有两个 pandas 数据框,它们只取自一列并将日期列设置为索引,所以现在我有两个 Series。我需要找到这些系列的相关性。 这里有几行来自dfd: index change 2018-
我正在尝试调整我的 Vagrantfile,因此如果它丢失,它会自动在项目根目录中创建一个文件夹。创建文件夹没问题,但我无法找到创建该文件夹的位置。 我发现此信息可在 Vagrant::Environ
我正在尝试在 jquery 中找到 Test3 的位置,请有人引导我走上正确的道路。 我需要jquery来显示5 Test7 Test2 Test6 Test5 Test3 Test8 谢谢 最佳
大家早上好 我有一个像这样的图像列表: 使用 jQuery 如何查找 ul#preload 中包含特定字符串(例如“green”)的所有图像 src 类似... var new_src = j
我正在开发一个修改 Excel 文件的应用程序。 如何找到任意行中最后使用的单元格? 示例:行号 => 5 中最后使用的单元格 最佳答案 要找到一行中的最后一个单元格,您需要 Range 的 End
我刚刚陷入 react native ,需要一些帮助才能在找到 token 时导航到 protected 屏幕。我应该在哪里寻找应用程序加载时的 token ?如何在不多次调用导航的情况下导航用户一次
非常奇怪...此页面是 protected 内容还是我不知道的内容?我尝试单击下一页 anchor 。 参见this page first. 我试图用这个来抓取元素 var buttonNext =
我是一名优秀的程序员,十分优秀!