无法从javascript调用backing bean方法

时间:2014-02-10 15:43:10

标签: java javascript spring jsf primefaces

我尝试在bean方法中编写javascript代码。我在申请开始时就此成功了。

当我运行我的应用程序时,js函数调用bean方法并返回值,但是当我点击按钮时它再也不会调用。我的意思是,它只在应用程序启动时调用bean方法。 我的按钮是:

<p:commandLink oncomplete="myRemote();" title="my button"
               />

我的javascript函数是:

 function myRemote() {
 ${myBackingBean.actionMyValues()}

 }

我的豆是:

@Controller
@Scope("view")
public class MyBackingBean implements Serializable {


public String actionMyValues() {

    String js="";
    /*getting some values from database and adding it to javascript variables.*/
    js += "alert('alert')";//
    return js;
}
}

1 个答案:

答案 0 :(得分:-2)

如果你想从你的支持bean调用JS,你可以使用org.primefaces.context.RequestContext类:

String js="";
/*getting some values from database and adding it to javascript variables.*/
js += "alert('alert')";
RequestContext.getCurrentInstance().execute("js");

修改

正如评论中所建议的那样,您还可以使用p:remoteCommandhttps://www.primefaces.org/showcase/ui/ajax/remoteCommand.xhtml

远程命令将替换您的自定义JS函数:

<p:commandButton value="My button" type="button" onclick="myRemote()" id="btnRemote" />  

<p:remoteCommand name="myRemote" actionListener="#{myBackingBean.actionMyValues()}"/>   

然后,如果你需要从你的bean调用JS,你仍然需要使用RequestContext