2014-02-27 76 views
2

我有一個很大的問題傳遞一個字符串變量到一個JavaScript函數來創建一個小程序。字符串變量帶支架到javascript

在我的Java類我傳遞變量「端點」 throught請求

ActionContext.getActionContext().getRequest().setAttribute("endpoint",endpoint); 

但我無法收回它在JSP頁面中。我已經嘗試了幾個html和struts元素,但我無法在js函數中獲取它。我的js函數(包含在jsp中)用於恢復變量的代碼是:

var endpoint = document.getElementById('endpoint'); 

希望你能幫我一把。非常感謝你提前。

編輯:js函數的代碼是:

function createApplet(){ 
var content = '<APPLET id="applet" '+ 
     'code="com.usr.local.AppletFiles.class" '+   'archive="applet/wsdl4j.jar,applet/xercesImpl.jar,applet/log4j.jar,applet/commons-logging.jar,applet/axis-ant.jar,applet/axis-schema.jar,applet/commons-discovery.jar,applet/jaxrpc.jar,applet/axis.jar,applet/saaj.jar,applet/serializer.jar,applet/xalan.jar,applet/xml-apis.jar,applet/JarApplet.jar">'+ 
     ' width="0" height="0" mayscript="true" >'; 

    var tableApplet = document.getElementById('tableApplet'); 

    var endpoint = document.getElementById('endpoint'); 
    alert('Endpoint: '+ endpoint); 

    var param= ''; 

    for(i=0;i<tableApplet .rows.length;i++){ 

    content += '<PARAM NAME="'+tableApplet .rows[i].cells[0].innerHTML+'" VALUE="'+tableApplet .rows[i].cells[1].innerHTML+'">'; 

    param+= tableApplet .rows[i].cells[0].innerHTML+'#'; 

    } 

content += '<param name="parametros" value="'+nombreParametros+'">'; 

content += '<param name="endpoint" value="'+endpoint+'">'; 

content +='&lt;/APPLET&gt;'; 

alert('content ' + content); 

return content ; 
} 
+0

顯示你如何使用JavaScript創建applet代碼。 –

+0

歡迎來到StackOverflow!您無法從JavaScript讀取請求屬性。看看這裏:http://stackoverflow.com/questions/15238647/passing-a-java-variable-to-a-javascript-function –

+0

謝謝安傑洛。 ¿我可以將參數「端點」傳遞給包含在jsp中的html代碼,然後從html代碼中恢復它? – Darkcloud

回答

0

您可以使用JSTL標記(http://www.tutorialspoint.com/jsp/jsp_standard_tag_library.htm),並把請求屬性上的JavaScript變種,你必須做類似的東西:

在JSP包括:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 

然後在jsp:

<script type="text/javascript"> 

var endpoint = '<c:out value="${pageContext.request.endpoint}"/>'; 

</script> 

當JSP是在服務器評估客戶端瀏覽器之前呈現所以你必須在終點全球JS變量請求attibute值,你可以在你的js代碼中使用它。

但是我認爲這是可能的,你正在使用的小程序錯誤的宗旨,爲各種原因:

  • 我看到存檔參數太多罐子,採取帳戶之前,每個客戶要運行你的applet所有這些jar都必須由JVM插件下載到客戶端機器上,在你的情況下這可能是太多時間。也可能如果你想調用一個端點,你需要用一個由java認可的CA發佈的公認證書來簽署所有的jar。

  • 看起來你想讓那個applet調用一些遠程服務......爲什麼?如果這不是非常必要,你爲什麼不從服務器上做?

希望這有助於,

2

使用OGNL注入請求屬性的JavaScript代碼值:

var endpoint = '<s:property value="%{#request.endpoint}" />'; 

OGNL Basics也看一看,特別是頁面中的最後一個表格。