目标无法访问,’null’在JSF中返回null
我想在JSF中创建一个简单的图书管理。 我正在使用Glashfish Server 3.1
书籍控制器:
@Named(value = "bookController") @SessionScoped public class BookController implements Serializable { @EJB BookFacadeLocal bookFacade; Book book = new Book(); private List booklist = new LinkedList (); /** Creates a new instance of BookController */ public BookController() { } public Book getBook() { if (book == null) book = new Book(); return book; } public void setBook(Book book) { this.book = book; } public List getBooklist() { return booklist; } public void setBooklist(List booklist) { this.booklist = booklist; } public String createNewBook() { setBook(new Book()); return "createBook"; } public String saveNewBook() { bookFacade.create(book); booklist=bookFacade.findAll(); return "listBooks"; } public String createBookList() { booklist=bookFacade.findAll(); return "listBooks"; } }
CreateBook视图:
Facelet Title Create Book
web.xml中:
javax.faces.PROJECT_STAGE Development Faces Servlet javax.faces.webapp.FacesServlet 1 Faces Servlet /faces/* 30 faces/index.xhtml
BookController:#{bookController}
– > BookController:at.em.controller.BookController@107dd383
错误:
/createBook.xhtml @ 13,82 value =“#{bookController.book.title}”:目标无法访问,’null’返回null
/createBook.xhtml @ 13,82 value =“#{bookController.book.title}”:目标无法访问,’null’返回null
#{bookController}
在范围内的任何位置都不可用。 这通常是@Named
注释的责任。 只有存在/WEB-INF/beans.xml
文件时,才会在webapp的启动时扫描此注释。 因此请确保该文件存在(可以保留为空)。
或者,您也可以使用标准的JSF注释:
import javax.faces.bean.ManagedBean; import javax.faces.bean.ViewScoped; @ManagedBean @ViewScoped public class BookController { // ... }
(请注意,我没有使用javax.faces.bean.SessionScoped
因为这是普通控制器的错误范围;如果使用它,同一个bean实例将在同一会话中的多个浏览器选项卡/窗口之间共享导致不直观的webapp行为)