java傳js
㈠ 如何在java中調用js方法
在Java中調用js文件中的function,傳入調用參數,並獲取返回值
js文件中的merge函數將兩個參數a,b相加,並返回c。
// expression.js
function merge(a, b) {
c = a * b;
return c;
}
在Java代碼中讀取js文件,並參數兩個參數,然後回去返回值。
package com.sinaapp.manjushri;
import java.io.FileReader;
import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
/** * Java調用並執行js文件,傳遞參數,並活動返回值 * * @author manjushri */
public class ScriptEngineTest {
public static void main(String[] args) throws Exception {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("javascript");
String jsFileName = "expression.js"; // 讀取js文件
FileReader reader = new FileReader(jsFileName); // 執行指定腳本
engine.eval(reader);
if(engine instanceof Invocable) {
Invocable invoke = (Invocable)engine; // 調用merge方法,並傳入兩個參數
// c = merge(2, 3);
Double c = (Double)invoke.invokeFunction("merge", 2, 3);
System.out.println("c = " + c);
}
reader.close();
}
}
輸出結果:
c = 5.0
㈡ js變數如何傳遞給java
js和java變數互傳
在jsp中經常會遇到把js變數賦給java變數,或者將java變數賦給js變數的情況,在此將通用的處理方法小結如下:
1、java變數傳給js寫法如下:
var a="<%=javaParam%>";
注意這里要將引號""加上;
2、js變數給java稍微復雜點,一般是在表單中用一個
的隱藏表單元素,然後在腳本中將js變數值賦給它:
var jsParamValue='aaaa';
form1.jsParam.value=jsParamValue;
然後就可以request.getPrameter("jsPrama");
來取得js變數值了。
㈢ java數據傳給js
是在web環境、還是java瀏覽器的環境呢
~~~~~~~~~~~~~
㈣ java數組傳給js變數
一是取出來挨個傳值
例如:var item1 = ${'arryas[1]'};
二是傳回ajax傳回json,、
例如:springmvc註解可以實現@responseBody
㈤ 怎麼將後台java的一個參數傳遞給 前台js
可以通過前台js請求
後台
java
代碼
,將
參數
以
返回值
的形式,返回給前台。這種方式用的最多的就是使用ajax了。通過在後台與
伺服器
進行少量數據交換,ajax可以使網頁實現非同步更新。這意味著可以在不重新載入整個網頁的情況下,對網頁的某部分進行更新。
㈥ 怎麼把一個java的bean傳給js函數
js和java變數互傳
在jsp中經常會遇到把js變數賦給java變數,或者將java變數賦給js變數的情況,在此將通用的處理方法小結如下:
1、java變數傳給js寫法如下:
var a="<%=javaParam%>";
注意這里要將引號""加上;
2、js變數給java稍微復雜點,一般是在表單中用一個
的隱藏表單元素,然後在腳本中將js變數值賦給它:
var jsParamValue='aaaa';
form1.jsParam.value=jsParamValue;
然後就可以request.getPrameter("jsPrama");
來取得js變數值了。
㈦ 把java的值傳給js
在java文件中
int aa=1;
request.setAttribute("aa",aa);
jsp文件中
用一個隱藏域接受一下值
<input type="hidden" name="aa" id="aa" value="${aa}">
js中
var aa=document.getElementbyid("aa").value;
if(aa==1){
document.getElementById('text1').style.display=none;
}
是不是這樣,沒怎麼看懂題
㈧ 如何將JSP中的java代碼中的值,傳入JS代碼中去
js與java是不同語言,運行在不同環境下,因此無法直接獲得對方數據。
java運行在伺服器端,在同一個jsp文件中,java先運行,js後運行,java可以生成一段js代碼,保證js運行得到相應的結果,因此可以用java定義js變數的方式來傳遞數據,例如:
<script>
var url="<%=url%>";
alert(username);
</script>
上面例子,<%%>中的內容會在伺服器端運行,在「」中間輸出網址,瀏覽器就會載入下面的結果:
<script>
var url="gif8.cn";
alert(url);
</script>
這部分就是標準的js代碼了。
㈨ 怎樣將java中的數據傳給js
方式有很多種。可以用sturts2框架。給頁面返回值,然後用el表達式取。也可以用session傳。也可以用out傳拼接起來
㈩ 如何在WebView中通過Java傳遞給JS數組
1.整體思路:
js調用java
首先將js代碼注入到webview的頁面中,然後通過修改window.location.href來向java傳遞參數,java端通過監聽頁面url的改變來識別js端傳遞的參數.然後再經解析數據實現java方法的調用.
java調用js
java通過webView.loadUrl("JavaScript:"+jsCode);來實現js代碼的調用
2. java調用js的實現
java調用js的方法,相當簡單:
String jsCode = "(function(){ /*js code here*/ })()";
webview.loadUrl("javascript:" + jsCode);
注意:要把js代碼用自執行函數包裹起來
利用這種方法可以把任意代碼注入到頁面中
注意: 當頁面剛載入時就需要把 2.1中的js代碼注入到頁面中,但是有時會出現頁面載入完成,但是注入的代碼沒有執行的現象,應該是因為js沒有及時載入而頁面先載入完成。要解決這個問題就需要在頁面載入完成時觸發一個事件比如jsBridgeReady,js端通過監聽jsBridgeReady事件來調用java方法。那麼總體流程如下:
載入頁面->注入js代碼->頁面載入完成->觸發js注入完成事件
代碼:
在BridgeWebClient中添加邏輯: 1,載入頁面時注入js代碼: 2,載入完成後觸發載入完成事件
@Override
public void onLoadResource(WebView view, String url) {
// 注入橋接代碼
// 這里通過讀取js文件獲得js代碼
if (mFileName != null) {
view.loadUrl(mBridge.createBaseJs(mContext, mFileName));
}
super.onLoadResource(view, url);
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
// 觸發注入完成事件,用於解決 注入的代碼沒有及時載入成功導致無法調用的問題
view.loadUrl("(function(){if(window.UAPPJSBridgeReady){window.UAPPJSBridgeReady();}})()");
}
如果你也想從文件讀取js代碼,記得把讀取的代碼壓縮一下,把注釋和換行刪除,不然很可能會報錯
js端調用java注入的代碼:
//判斷代碼是否注入完成
if(window.UAPPJSBridge){
//調用注入的方法
window.UAPPJSBridge.wxshare(message,success,error);
}else{
//監聽注入完成的事件
window.onBridgeLoaded=function(){
if(window.UAPPJSBridge){
window.UAPPJSBridge.wxshare(message,success,error);
}
}
}