2014-02-06 33 views
0

我們需要訪問在struts動作類(它具有get/set方法)中定義的實例映射。我們需要動態地填充該地圖。我們生成代碼以在運行時使用基於某些用戶輸入的Java腳本填充地圖。我們使用freemarker作爲模板。 FTL內ftl內的java腳本中的訪問動作類映射

的Java腳本代碼如下所示:

innerHTML += '<input class="isn" onChange="validateTag(this);" name="serialsInp[\'' + listing + '\']" value=""/>'; 

這裏serialsInpHashMap<String, String>listing是Java腳本變量。以上代碼呈現一個文本字段。期望是當用戶在這個文本字段中輸入文本時,serialsInp應該填充'列表'作爲鍵和用戶輸入的值作爲值。

這是在javascript/ftl中訪問地圖的正確方法嗎?

+0

腳本的執行參數名稱「」客戶端,即使他們是JavaScript。 –

+0

freemarker標記/變量在服務器端被解釋,但是您在客戶端生成freemarker代碼,太遲了! – fustaki

回答

1

解決!問題是表單參數。在我們的例子中,map key包含' - ',由於安全原因,它是不允許的。

一旦我們改變「PARAMS」攔截器,以使問題得到了解決 - 在struts.xml中

  <interceptor-ref name="params"> 
       <param name="acceptParamNames">\w+((\.\w+)|(\[\d+\])|(\['\w+(\-\w+)*'\]))*</param> 
      </interceptor-ref> 

添加以下代碼參考202 & post