bom estou utilizando JBOSS PORTAL + JBOSS SEAM
lá vai… é um exemplo básico do livros projetos praticos Jboss seam…
GadgetBean.java
/*
* Copyright 2006 James A Farley
*/
package com.citespace.test;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;
import org.jboss.seam.annotations.Name;
@Entity
@Table(name="GADGET")
@Name("gadget")
public class GadgetBean implements Serializable {
private long mId;
private String mDescription = "";
private String mType = "";
public GadgetBean() { }
@Id @GeneratedValue
@Column(name="GADGET_ID")
public long getId() {
return mId;
}
public void setId(long id) {
mId = id;
}
@Column(name="DESCR")
public String getDescription() {
return mDescription;
}
public void setDescription(String desc) {
mDescription = desc;
}
@Column(name="TYPE")
public String getType() {
return mType;
}
public void setType(String t) {
mType = t;
}
@Transient
public Map<String,String> getGadgetTypes() {
Map<String,String> types = new HashMap<String,String>();
for (GadgetType value : GadgetType.values()) {
types.put(value.label(), value.name());
}
return types;
}
}
GadgetAdminBean.java
/*
* Copyright 2006 James A Farley
*/
package com.citespace.test;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
@Stateless
@Name("gadgetAdmin")
public class GadgetAdminBean implements IGadgetAdminBean {
@PersistenceContext(unitName="gadgetDatabase")
private EntityManager mEntityManager;
@In(value="gadget", create=true)
private GadgetBean mActiveGadget;
public GadgetBean getActiveGadget() {
return mActiveGadget;
}
public void setActiveGadget(GadgetBean activeGadget) {
mActiveGadget = activeGadget;
}
/** Retrieve all gadgets from the catalog, ordered by description */
public List<GadgetBean> getAllGadgets() {
List<GadgetBean> gadgets = new ArrayList<GadgetBean>();
try {
Query q =
mEntityManager.createQuery("select g from GadgetBean as g order by g.description");
List<?> gList = q.getResultList();
Iterator<?> i = gList.iterator();
while (i.hasNext()) {
gadgets.add((GadgetBean)i.next());
}
}
catch (Exception e) {
e.printStackTrace();
}
return gadgets;
}
/** Insert the gadget just created/edited into
* the catalog
*/
public String newGadget() {
newGadget(getActiveGadget());
return "success";
}
/** Insert a new gadget into the catalog */
public void newGadget(GadgetBean g) {
try {
mEntityManager.persist(g);
}
catch (Exception e) {
e.printStackTrace();
}
}
}
addGadget.xhtml -->> Ele é chamado inicialmente no JBOSS PORTAL
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:s="http://jboss.com/products/seam/taglib"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
template="layout/template.xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:rich="http://richfaces.org/rich">
<ui:define name="body">
<h:form id="HelloForm">
<rich:panel>
<f:facet name="header">Hello World</f:facet>
<p>Please type the description and type bellow:</p>
<div class="dialog">
<h:panelGrid columns="2" rowClasses="prop" columnClasses="name,value">
<h:outputLabel for="description">Description</h:outputLabel>
<h:inputText id="description"
value="#{gadget.description}" required="true"/>
<h:outputLabel for="type">Type</h:outputLabel>
<h:selectOneMenu id="type" value="#{gadget.type}" required="true">
<f:selectItems value="#{gadget.gadgetTypes}"/>
</h:selectOneMenu>
<h:commandButton action="#{gadgetAdmin.newGadget}" value="Create" type="submit" />
</h:panelGrid>
</div>
</rich:panel>
</h:form>
</ui:define>
</ui:composition>
faces-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xi="http://www.w3.org/2001/XInclude"
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_1_2.xsd">
<managed-bean>
<managed-bean-name>gadget</managed-bean-name>
<managed-bean-class>com.citespace.test.GadgetBean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>gadgetAdmin</managed-bean-name>
<managed-bean-class>com.citespace.test.GadgetAdminBean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<navigation-rule>
<navigation-case>
<from-outcome>success</from-outcome>
<to-view-id>/gadgetList.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
<application>
<view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
<state-manager>org.jboss.portletbridge.application.PortletStateManager</state-manager>
<locale-config>
<default-locale>en</default-locale>
<supported-locale>bg</supported-locale>
<supported-locale>de</supported-locale>
<supported-locale>en</supported-locale>
<supported-locale>fr</supported-locale>
<supported-locale>tr</supported-locale>
</locale-config>
</application>
</faces-config>
portlets-instances.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE deployments PUBLIC
"-//JBoss Portal//DTD Portlet Instances 2.6//EN"
"http://www.jboss.org/portal/dtd/portlet-instances_2_6.dtd">
<deployments>
<deployment>
<instance>
<instance-id>SeamPortletInstance</instance-id>
<portlet-ref>citeSpaceRealTest</portlet-ref>
</instance>
</deployment>
<deployment>
<instance>
<instance-id>GadgetProjectPortletInstance</instance-id>
<portlet-ref>gadgetPratico</portlet-ref>
</instance>
</deployment>
</deployments>
portlets.xml
<?xml version="1.0" encoding="UTF-8"?>
<portlet-app
xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"
version="2.0">
<portlet>
<portlet-name>citeSpaceRealTest</portlet-name>
<display-name>JBoss Seam Portlet</display-name>
<portlet-class>
javax.portlet.faces.GenericFacesPortlet
</portlet-class>
<init-param>
<name>javax.portlet.faces.defaultViewId.view</name>
<value>/home.xhtml</value>
</init-param>
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>VIEW</portlet-mode>
</supports>
<portlet-info>
<title>JBoss Seam Portlet</title>
</portlet-info>
</portlet>
<portlet>
<portlet-name>gadgetPratico</portlet-name>
<display-name>GadgetProjectPortletPratico</display-name>
<portlet-class>
javax.portlet.faces.GenericFacesPortlet
</portlet-class>
<init-param>
<name>javax.portlet.faces.defaultViewId.view</name>
<value>/addGadget.xhtml</value>
</init-param>
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>VIEW</portlet-mode>
</supports>
<portlet-info>
<title>GadgetProjectPortlet</title>
</portlet-info>
</portlet>
</portlet-app>
page.xml
<?xml version="1.0" encoding="UTF-8"?>
<pages xmlns="http://jboss.com/products/seam/pages"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://jboss.com/products/seam/pages http://jboss.com/products/seam/pages-2.1.xsd"
no-conversation-view-id="/home.xhtml"
login-view-id="/login.xhtml">
<page view-id="*">
<navigation>
<rule if-outcome="home">
<redirect view-id="/home.xhtml"/>
</rule>
</navigation>
</page>
<exception class="org.jboss.seam.framework.EntityNotFoundException">
<redirect view-id="/error.xhtml">
<message severity="warn">Record not found</message>
</redirect>
</exception>
<exception class="javax.persistence.EntityNotFoundException">
<redirect view-id="/error.xhtml">
<message severity="warn">Record not found</message>
</redirect>
</exception>
<exception class="javax.persistence.EntityExistsException">
<redirect view-id="/error.xhtml">
<message severity="warn">Duplicate record</message>
</redirect>
</exception>
<exception class="javax.persistence.OptimisticLockException">
<end-conversation/>
<redirect view-id="/error.xhtml">
<message severity="warn">Another user changed the same data, please try again</message>
</redirect>
</exception>
<exception class="org.jboss.seam.security.AuthorizationException">
<redirect view-id="/error.xhtml">
<message severity="error">You don't have permission to access this resource</message>
</redirect>
</exception>
<exception class="org.jboss.seam.security.NotLoggedInException">
<redirect view-id="/login.xhtml">
<message severity="warn">#{messages['org.jboss.seam.NotLoggedIn']}</message>
</redirect>
</exception>
<exception class="javax.faces.application.ViewExpiredException">
<redirect view-id="/error.xhtml">
<message severity="warn">Your session has timed out, please try again</message>
</redirect>
</exception>
<exception class="org.jboss.seam.ConcurrentRequestTimeoutException" log-level="trace">
<http-error error-code="503" />
</exception>
<exception>
<redirect view-id="/error.xhtml">
<message severity="error">Unexpected error, please try again</message>
</redirect>
</exception>
</pages>
gadgetList.xhtml
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:s="http://jboss.com/products/seam/taglib"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
template="layout/template.xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:rich="http://richfaces.org/rich">
<ui:define name="body">
<rich:panel>
<f:facet name="header">Result List</f:facet>
<div class="dialog">
<f:view>
<h:dataTable value="#{gadgetAdmin.allGadgets}" var="g">
<h:column>
<f:facet name="header">
<h:outputText value="Type" />
</f:facet>
<h:outputText value="#{g.type}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Description" />
</f:facet>
<h:outputText value="#{g.description}" />
</h:column>
</h:dataTable>
<h:form>
<h:commandLink action="addGadget">
<h:outputText value="Add a new gadget" />
</h:commandLink>
</h:form>
</f:view>
</div>
</rich:panel>
</ui:define>
</ui:composition>
GadgetType.java
package com.citespace.test;
public enum GadgetType {
MOBILE_PHONE("Mobile phone"),
MEDIA_PLAYER("Personal media player"),
LAPTOP("Laptop/notebook"),
GPS("GPS");
private final String mLabel;
GadgetType(String desc) {
this.mLabel = desc;
}
public String label() { return mLabel; }
};
Cara está ae, será que consegue ajudar ou precisa de mais alguma informação?