You can find the full source code for this website in the Seam package in the directory /examples/wiki. It is licensed under the LGPL.
Your xhtml file might not reference the bean. Look at the following java bean
@Name("adminPage") @Scope(ScopeType.CONVERSATION) public class AdminPageAction { @In private EntityManager em; @In @Out(required = false) private BlogEntry entry; @Create @Begin(join = true) public void create() { entry = new BlogEntry(); } public void save() { em.persist(entry); } }
The entry will be nicely outjected to be used in a xhtml page.
However, if the xhtml itself looks like this:
<h:form> <h:panelGrid columns="2"> <h:outputText value="Subject" /> <h:inputText value="#{entry.subject}" /> <h:outputText value="Text" /> <h:inputTextarea value="#{entry.text}" /> </h:panelGrid> <h:commandButton action="#{adminPage.save}" value="Save" /> <a:commandButton value="View" reRender="textPanel" /> </h:form> <h:panelGrid columns="1" id="textPanel"> <s:formattedText value="#{entry.text}" /> </h:panelGrid>
The adminPage won't be created until save/view is called, and at this point, entry
will be null. You can get around this problem by referencing entry as #{adminPage.entry.} (don't forget to add getter/setter), by using a factory or by calling some dummy method in the bean from pages.xml.