简体   繁体   English

如何在Javascript中调用Java方法

[英]How to call Java method in Javascript

I am creating web page using JSF 2.0. 我正在使用JSF 2.0创建网页。

What I want to do is, call one method setLastVisitedPage that I have in bean MyBean when everypage loads. 我想做的是,当每个页面加载时,调用我在bean MyBean拥有的一种方法setLastVisitedPage

I can do this by simply writing 我可以通过简单地写

<h:body onLoad="#{MyBean.setLastVisitedPage()}"

however I would have to write in all pages and already there are 30-40 pages created. 但是我必须写在所有页面上,并且已经创建了30-40页。 :( :(

In page as I have common heading, I have created one file called commonPage.xhtml . 在具有通用标题的页面中,我创建了一个名为commonPage.xhtml文件。 I was thinking to include that file here. 我当时正在考虑将该文件包含在这里。

So I added below in commonPage.xhtml so that whenever any page is loaded, myScript.js gets called and I get alert as "im here". 因此,我在commonPage.xhtml添加了以下内容,以便无论何时加载任何页面,都会调用myScript.js ,并且我会收到“我在这里”的警报。

<h:outputScript name="js/myScript.js" target="head" />

and myScript.js has myScript.js

onload = alert("i m here");

Whenever I open any new page, I am getting alert as "im here". 每当我打开任何新页面时,我都会收到“我在这里”的警报。

Now my question is how can I add #{MyBean.setLastVisitedPage()} in javascript so that setLastVisitedPage() get called for every page? 现在我的问题是如何在JavaScript中添加#{MyBean.setLastVisitedPage()} ,以便每个页面都调用setLastVisitedPage()

Is there any alternative way? 还有其他方法吗? May be I am thinking in wrong way. 可能是我想错了。

Since you are using JSF you better use the PreRenderViewEvent , like this 由于您正在使用JSF,因此最好使用这样的PreRenderViewEvent

 <f:metadata>
     <f:event type="preRenderView" listener="#{MyBean.putLastVisitedPage}"/>
 </f:metadata>


public void putLastVisitedPage(ComponentSystemEvent event){
}

take a look here JSF 2 PreRenderViewEvent Example 在这里看看JSF 2 PreRenderViewEvent示例

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM