JSeam remoting实现ajax的菜鸟问题

mycoy 2009-03-02
大家好:
    我现在正在学习jseam的remoting实现ajax的功能,但是联一个最简单的demo都没有调通。
    java代码:
@Local
public interface HelloLocal {
  @WebRemote
  public String sayHello(String name);
}
@Stateless
@Name("helloAction")
public class HelloAction implements HelloLocal {
  public String sayHello(String name) {
    return "Hello, " + name;
  }
}

    xhtml页面:
           <script type="text/javascript"
src="seam/resource/remoting/resource/remote.js"></script>
<s:remote include="helloAction" />

<script type="text/javascript">
    //<![CDATA[
   
    function sayHello() {
      //var name = prompt("What is your name?");
      var name = 'zwz';
      Seam.Component.getInstance("helloAction").sayHello(name, sayHelloCallback);
    }

    function sayHelloCallback(result) {
      alert(result);
    }

   // ]]>
  </script>

<button onclick="javascript:sayHello()">
Say Hello
</button>

    faces-config.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<faces-config version="1.2"
   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_1_2.xsd">

    <application>
        <view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
    </application>
</faces-config>

   components.xml文件:
<core:init jndi-pattern="java:comp/env/jboss-seam-remoting/#{ejbName}/local" debug="true"/>   

    <core:manager conversation-timeout="120000"
                  concurrent-request-timeout="500"
                  conversation-id-parameter="cid"/>

    <component name="org.jboss.seam.remoting.remoting">
      <property name="debug">true</property>
    </component>


    web.xml文件:
<listener>
<listener-class>
org.jboss.seam.servlet.SeamListener
</listener-class>
</listener>

<filter>
<filter-name>Seam Filter</filter-name>
<filter-class>org.jboss.seam.servlet.SeamFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>Seam Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

<servlet>
<servlet-name>Seam Resource Servlet</servlet-name>
<servlet-class>
org.jboss.seam.servlet.SeamResourceServlet
</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>Seam Resource Servlet</servlet-name>
<url-pattern>/seam/resource/*</url-pattern>
</servlet-mapping>

<!-- JSF and Facelets -->

<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.xhtml</param-value>
</context-param>

<context-param>
<param-name>facelets.DEVELOPMENT</param-name>
<param-value>true</param-value>
</context-param>

<!-- 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-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.seam</url-pattern>
</servlet-mapping>

<ejb-local-ref>
<ejb-ref-name>
jboss-seam-remoting/HelloAction/local
</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<local>org.jboss.seam.example.remoting.HelloLocal</local>
</ejb-local-ref>


   但是程序部署运行时,总是提示javascript错误,说找不到Seam对象的方法。
    其实,程序基本是从jseam的demo考贝的。
    我使用jseam2.1.1 , JBoss AS 5.0
   如果哪位大师有可用的简单的例子,可不可以发份给我:zw_z7@hotmail.com
    请大家指教,谢谢。
andyhan 2009-03-03
@WebRemote 干嘛放Local接口上? 那样就需要多加一个js的引用,完全没有必要一定要使用EJB来实现Remote吧?
  <script type="text/javascript" src="seam/resource/remoting/resource/remote.js"></script>
  <script type="text/javascript" src="seam/resource/remoting/interface.js?sayHello"></script> 
mycoy 2009-03-05
To andyhan:
   是不一定,但是也不至于出错吧?请问你有例子吗,能否给我发一份啊:
    zw_z7@hotmail.com
   谢谢
andyhan 2009-03-09
mycoy 写道
To andyhan:
   是不一定,但是也不至于出错吧?请问你有例子吗,能否给我发一份啊:
    zw_z7@hotmail.com
   谢谢


Seam 不是有自带的例子吗?
Global site tag (gtag.js) - Google Analytics