不可能使用DWR注射

时间:2014-09-22 21:38:02

标签: jsf dwr

我有两个豆子,我在第一个注入第二个,但是当我从第二个调用seconde中调用一个方法时,dwr不会知道它,这是我的两个bean和dwr.xml的代码

这是dwr.xml:

<dwr>
 <allow>
 <create creator="new" javascript="Hello">
 <param name="class" value="eu.sorinzo.lc.Hello"/>
 </create>
 </allow>
</dwr>

Bean hello

package eu.sorinzo.lc;
import eu.sorinzo.lc.common.HelloYou;
import java.io.Serializable;
import javax.enterprise.context.SessionScoped;
import javax.inject.Inject;
import javax.inject.Named;
@Named
@SessionScoped
public class Hello implements Serializable{ 
@Inject
private HelloYou helloYou;
public String sayMyHello() {
return helloYou.MyHelloYou();
 }}

Bean helloYou

package eu.sorinzo.lc.common;
import java.io.Serializable;
import javax.enterprise.context.SessionScoped;
import javax.inject.Named;
@Named
@SessionScoped
public class HelloYou implements Serializable{
public String MyHelloYou(){
return "success MyHelloYou";
 }}

如果Hello bean的方法sayMyHello返回一条简单的消息,当我调用它时,它工作正常,但如果它返回MyHelloYou()的消息,则会给出错误消息:

console.trace(): engine.js:789
dwr.engine._debug() engine.js:789
dwr.engine._debug() engine.js:789
dwr.engine.defaultErrorHandler() engine.js:180
dwr.engine.remote.handleException() engine.js:921
<anonyme> engine.js line 584 > eval:6
<anonyme> engine.js line 584 > eval:2
dwr.engine._eval() engine.js:584
dwr.engine.transport.xhr.stateChange() engine.js:1632
dwr.engine.transport.xhr.send/batch.req.onreadystatechange() engine.js:1477
"Error: undefined, Error

1 个答案:

答案 0 :(得分:0)

在dwr.xml中,您可以使用:

:使用Java&#39; new&#39;操作

静态:使用&#39; getInstance()&#39;方法(默认情况下)获取类的实例。

:这不会创建对象。请参阅下文了解原因。 (V1.1 +)

脚本化:通过BSF使用BeanShell或Groovy等脚本语言。

spring :通过Spring Framework提供对bean的访问。

jsf :使用JSF中的对象。 (V1.1 +)

struts :使用struts FormBeans。 (V1.1 +)

页面流:允许从Beehive或Weblogic访问PageFlow。 (V1.1 +)

我认为如果您使用JEE6 CDI,DWR不支持注入,并且它与之前编写的创建者类型一起工作