我尝试在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;
}
}
答案 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:remoteCommand
(https://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
。