[jboss-user] [JBoss Seam] - Re: Injection and remoting
gllambi
do-not-reply at jboss.com
Mon Nov 13 12:54:17 EST 2006
"sbryzak2" wrote : Injection should work just fine. Can you post a code sample?
Here is the Session Bean
| package org.seam.ejemplo.login.session;
|
| import java.util.List;
|
| import javax.ejb.Stateless;
| import javax.persistence.EntityManager;
| import javax.persistence.PersistenceContext;
|
| import org.jboss.seam.annotations.In;
| import org.jboss.seam.annotations.Logger;
| import org.jboss.seam.annotations.Name;
| import org.jboss.seam.core.FacesMessages;
| import org.jboss.seam.log.Log;
| import org.seam.ejemplo.login.beans.Cliente;
|
| /**
| * @author gllambi
| *
| */
| @Stateless
| @Name("login")
| public class LoginAction implements Login {
|
| @In
| private Cliente cliente;
|
| @PersistenceContext
| private EntityManager em;
|
| @Logger
| private Log log;
|
| public String login() {
| List existing = em.createQuery(
| "select usuario from Cliente where usuario=:usuarioParam")
| .setParameter("usuarioParam", cliente.getUsuario())
| .getResultList();
| if (!existing.isEmpty()) {
| log.info("Se logueo el client #{cliente.usuario}");
| return "exito";
| } else {
| log.info("No existe el cliente");
| FacesMessages.instance().add("El cliente #{cliente.usuario} no fue registrado. Regístrese");
| return null;
| }
| }
| }
|
Here is the interface
| package org.seam.ejemplo.login.session;
|
| import javax.ejb.Local;
|
| import org.jboss.seam.annotations.WebRemote;
|
| /**
| * @author gllambi
| *
| */
| @Local
| public interface Login {
|
|
| /**
| * Se valida el cliente y su contraseña
| * @return
| */
| @WebRemote
| public String login();
|
| }
|
Here is the page
| <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
| <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
| <%@ taglib uri="https://ajax4jsf.dev.java.net/ajax" prefix="a4j"%>
|
| <html>
| <head>
| <link href="<%=request.getContextPath()%>/estilos/estilo.css"
| rel="stylesheet" type="text/css">
| <f:loadBundle basename="mensajes" var="msg" />
| <title>Login</title>
| <script type="text/javascript"
| src="<%=request.getContextPath()%>/seam/remoting/resource/remote.js">
| <!--
| // This space intentionally left blank
| //-->
| </script>
| <script type="text/javascript"
| src="<%=request.getContextPath()%>/seam/remoting/interface.js?login">
| <!--
| // This space intentionally left blank
| //-->
| </script>
| <script type="text/javascript">
| //<![CDATA[
| function login() {
| Seam.Component.getInstance("login").login(loginCallback);
| }
| function loginCallback(result) {
| alert('El resultado de la operación es '+result);
| }
| // ]]>
| </script>
| </head>
| <body>
| <center><f:view>
| <h:form id="loginForm">
| <h:messages styleClass="error" id="mensajesError" />
| <h:panelGrid columns="2">
| <h:outputText id="etiquetaUsuario" value="#{msg.user}" />
| <h:inputText id="usuario" value="#{cliente.usuario}" />
| <h:outputText id="etiquetaPassword" value="#{msg.password}" />
| <h:inputText id="password" value="#{cliente.password}" />
| </h:panelGrid>
| <h:commandButton onclick="javascript:login()"
| value="Remoting #{msg.login} Button" />
| <a4j:commandButton action="#{login.login}"
| value="Ajax #{msg.login} Button">
| </a4j:commandButton>
| <h:commandButton action="#{login.login}"
| value="Seam #{msg.login} Button" />
| </h:form>
| </f:view></center>
| </body>
| </html>
|
And here is the web.xml
| <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
| xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
| xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
| <display-name>Login</display-name>
| <context-param>
| <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
| <param-value>client</param-value>
| </context-param>
| <context-param>
| <description>
| This parameter tells MyFaces if javascript code should be
| allowed in the rendered HTML output. If javascript is
| allowed, command_link anchors will have javascript code that
| submits the corresponding form. If javascript is not
| allowed, the state saving info and nested parameters will be
| added as url parameters. Default: "true"
| </description>
| <param-name>org.apache.myfaces.ALLOW_JAVASCRIPT</param-name>
| <param-value>true</param-value>
| </context-param>
| <context-param>
| <description>
| This parameter tells MyFaces if javascript code should be
| allowed in the rendered HTML output. If javascript is
| allowed, command_link anchors will have javascript code that
| submits the corresponding form. If javascript is not
| allowed, the state saving info and nested parameters will be
| added as url parameters. Default: "false"
|
| Setting this param to true should be combined with
| STATE_SAVING_METHOD "server" for best results.
|
| This is an EXPERIMENTAL feature. You also have to enable the
| detector filter/filter mapping below to get JavaScript
| detection working.
| </description>
| <param-name>org.apache.myfaces.DETECT_JAVASCRIPT</param-name>
| <param-value>false</param-value>
| </context-param>
| <context-param>
| <description>
| If true, rendered HTML code will be formatted, so that it is
| "human readable". i.e. additional line separators and
| whitespace will be written, that do not influence the HTML
| code. Default: "true"
| </description>
| <param-name>org.apache.myfaces.PRETTY_HTML</param-name>
| <param-value>true</param-value>
| </context-param>
| <context-param>
| <description>
| If true, a javascript function will be rendered that is able
| to restore the former vertical scroll on every request.
| Convenient feature if you have pages with long lists and you
| do not want the browser page to always jump to the top if
| you trigger a link or button action that stays on the same
| page. Default: "false"
| </description>
| <param-name>org.apache.myfaces.AUTO_SCROLL</param-name>
| <param-value>true</param-value>
| </context-param>
| <filter>
| <filter-name>Seam Redirect Filter</filter-name>
| <filter-class>
| org.jboss.seam.servlet.SeamRedirectFilter
| </filter-class>
| </filter>
| <filter>
| <filter-name>extensionsFilter</filter-name>
| <filter-class>
| org.apache.myfaces.webapp.filter.ExtensionsFilter
| </filter-class>
| <init-param>
| <description>
| Set the size limit for uploaded files. Format: 10 - 10
| bytes 10k - 10 KB 10m - 10 MB 1g - 1 GB
| </description>
| <param-name>uploadMaxFileSize</param-name>
| <param-value>100m</param-value>
| </init-param>
| <init-param>
| <description>
| Set the threshold size - files below this limit are
| stored in memory, files above this limit are stored on
| disk.
|
| Format: 10 - 10 bytes 10k - 10 KB 10m - 10 MB 1g - 1 GB
| </description>
| <param-name>uploadThresholdSize</param-name>
| <param-value>100k</param-value>
| </init-param>
| </filter>
| <filter>
| <display-name>Ajax4jsf Filter</display-name>
| <filter-name>ajax4jsf</filter-name>
| <filter-class>org.ajax4jsf.Filter</filter-class>
| </filter>
| <filter-mapping>
| <filter-name>Seam Redirect Filter</filter-name>
| <url-pattern>*.seam</url-pattern>
| </filter-mapping>
| <filter-mapping>
| <filter-name>extensionsFilter</filter-name>
| <url-pattern>*.seam</url-pattern>
| </filter-mapping>
| <filter-mapping>
| <filter-name>extensionsFilter</filter-name>
| <url-pattern>/faces/*</url-pattern>
| </filter-mapping>
| <filter-mapping>
| <filter-name>ajax4jsf</filter-name>
| <servlet-name>Faces Servlet</servlet-name>
| <dispatcher>REQUEST</dispatcher>
| <dispatcher>FORWARD</dispatcher>
| <dispatcher>INCLUDE</dispatcher>
| </filter-mapping>
| <!-- Listener, that does all the startup work (configuration, init). -->
| <listener>
| <listener-class>
| org.apache.myfaces.webapp.StartupServletContextListener
| </listener-class>
| </listener>
| <listener>
| <listener-class>
| org.jboss.seam.servlet.SeamListener
| </listener-class>
| </listener>
| <!-- Faces Servlet -->
| <servlet>
| <servlet-name>Faces Servlet</servlet-name>
| <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
| <load-on-startup>1</load-on-startup>
| </servlet>
| <servlet>
| <servlet-name>Seam Remoting</servlet-name>
| <servlet-class>
| org.jboss.seam.remoting.SeamRemotingServlet
| </servlet-class>
| </servlet>
| <!-- Faces Servlet Mapping -->
| <servlet-mapping>
| <servlet-name>Faces Servlet</servlet-name>
| <url-pattern>*.seam</url-pattern>
| </servlet-mapping>
| <servlet-mapping>
| <servlet-name>Seam Remoting</servlet-name>
| <url-pattern>/seam/remoting/*</url-pattern>
| </servlet-mapping>
| <!-- Welcome files -->
| <welcome-file-list>
| <welcome-file>index.jsp</welcome-file>
| </welcome-file-list>
| <login-config>
| <auth-method>BASIC</auth-method>
| </login-config>
| </web-app>
|
Thanks
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3985548#3985548
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3985548
More information about the jboss-user
mailing list