【问题标题】:How can I add java array elements into java script array?如何将 java 数组元素添加到 javascript 数组中?
【发布时间】:2015-05-14 14:00:57
【问题描述】:

如何将我的 java 数组内容添加到空的 javascript 数组中?我试过了,但它不起作用。

这是我在 file.jsp 中的代码。

<%@page import="javax.portlet.PortletPreferences" %>

   PortletPreferences prefs = renderRequest.getPreferences(); // here i am reading values from preferences in Liferay and rendering values

 <select id="dropdown1" onchange="changeAction(this.value);">
                        <option value="" selected="selected" >Select</option>
                        <option value="">value1</option>
                        <option value="">value2</option>
  </select>

      <label>Device</label>
      <%

       String device1 = prefs.getValue("device1","");
       String[] array1 = device1.split("\n"); // String[] array=["books","pens","cars"];
     %>

      <select id="dropdown2">
                <option value="select" selected="selected">Select</option>
      </select>

下面是我的 Java 脚本代码,jsp 代码和 javascripts 都在同一个 jsp 文件中。

<script>
     function changeAction(optionVal){
     var tempArrayLabel = [];

     jQuery("#dropdown2").empty().append('<option value="-1" >Select</option>');

    if(optionVal == "selected val in first drop down") {

tempArrayLabel = "add values from array1 or device1"; // update the drop down list


}

for (var i=0;i<tempArrayLabel.length;i++){
    jQuery('<option/>').html(tempArrayLabel[i]).appendTo('#dropdown2');
}

}

 </script>

感谢您的任何建议。

【问题讨论】:

  • String[] array=["books","pens","cars"];不是文档元素。文档元素是 html 标签而不是 java 代码。您可以编写一个包含逗号分隔值的 div,并将该 div 命名为 arrayDiv 并从中获取值。
  • @sgpalit.. 在我的情况下,我只需要更改 java 脚本代码,但不能更改 String[] array=["books","pens","cars"];因为这个数组是动态获取值的,但出于参考目的,我这样提到过。建议我使用javascript,以便我将值添加到“tempArrayValue”
  • 好的,既然选项保持不变,为什么需要清除选择选项然后通过javascript再次添加它们?我的(当前)答案将不起作用,因为代码在两个文件中而不是一个文件中。如果您只需要清除所选选项,则无需删除选项并在选择框中重新添加它们
  • @ Nikos M ,jsp 代码和 java 脚本都在同一个 jsp 文件中。您的答案非常接近,但有些地方不见了。请单独更新您的 java 8 答案也..
  • @NikosM。你的代码运行良好!!好功夫。谢谢。

标签: java javascript arrays


【解决方案1】:

更新

试试这个(Java 8,see here for more ways to join an array in java

<%  
  String[] array=["books","pens","cars"];
  String array_joined = '["' + String.join('","', array) + '"];';
%>

或者使用它来加入数组,以防String.join 方法不可用

<%  
  String[] array=["books","pens","cars"];
  String array_joined = '"' + array[0] + '"';
  for (int i=1; i<array.length; i++) array_joined += ',' + '"' + array[i] + '"';
  array_joined = '[' + array_joined + '];';
%>

<script>
     var javaArray= <%= array_joined %> // renders ["books","pens","cars"];

     var tempArrayValue = [];

     function myFunction(){

     for(var i=0,j=0;i<javaArray.length;i++,j++){

     tempArrayValue[j]=javaArray[i]; //trying to store ["books","pens","cars"] values into "tempArrayValue"

     }

  }

</script>

注意我不记得jsp标签,所以我可能使用了不正确的标签来呈现上面的jsp表达式,请相应地使用

找到使用&lt;%= %&gt;表达式标签

【讨论】:

  • var javaArray= [""];这一行,我收到错误为“无效字符常量”
  • @user3534759,其实这应该是一个jsp渲染表达式标签,所以我可能使用了不正确的标签,提到过这个,我现在不记得标签语法,正在寻找它
  • @user3534759,好的found it,使用 表达式标签
  • Nikos, var javaArray= [""];仍然给出这样的错误。在这一行发现多个注释: - 类型不匹配:无法从 String[] 转换为任何 - 无效的字符常量
  • @user3534759,代码是否与其余代码在同一页面上(其中定义了数组 ["books","pens","cars"])?如果是,你有 Java 8 或其他版本吗? String.join 将与 Java 8 一起使用(根据答案中的链接)。给出替代方法,更新答案
猜你喜欢
  • 1970-01-01
  • 2023-04-04
  • 2023-04-02
  • 2015-05-11
  • 1970-01-01
  • 2021-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多