如何从Servlet中的隐藏字段中获取Array值?

时间:2014-02-19 02:40:41

标签: java arrays jsp servlets

我有一个jsp页面,其中包含一个带有数组值的隐藏字段。

<input value="[Ljava.lang.String;@9700b4" name="val0" type="hidden">

现在在java文件中,这是servlet我想要这个数组。所以像这样的代码,

String str[] = request.getParameterValues("val0");

但是这个给了我数组,我的实际数组是该数组的第一个索引。 如何在servlet页面中获取数组值?

5 个答案:

答案 0 :(得分:0)

"[Ljava.lang.String;@9700b4"不是你认为的那样;它是数组上的toString(),而不是正确的序列化。你从getParameterValues()得到的是那个确切的字符串,"[Ljava.lang.String;@9700b4"(可能不是你想要的)。通常,您要么在会话中存储String [],要么将其序列化为JSON,然后反序列化str[0]

您可以在Strings之间使用分隔符吗?您可能希望在HTML中看到类似的内容:

<input value="array_element_0,array_element_1,..." name="val0" type="hidden">

答案 1 :(得分:0)

你不能直接这样做,你必须首先将其类似于数组:

 <% String str[] = request.getAttribute("val0"); // casting your String[] Object
// check if array contains value
if(str.length>0){
%>
<input value="<%=str[0]%>" name="val0" type="hidden">
<% } else{
// else part ......
}

答案 2 :(得分:0)

试试这个:

<% for (String s : jspStrArray) {%>
  <input value="<%=s%>" name="val0" type="hidden"/>
<%}%>

这将在ur jsp

中生成n个隐藏字段

答案 3 :(得分:0)

您在代码中犯了一些错误,您应该在以下代码之前添加此符号$

<form>
<c:forEach var="somename like users" items="${user}">
<input type="hidden" name="val0" value="${[Ljava.lang.String;@9700b4}">
</c:forEach>
</form>

*某些名称意味着您在servlet页面中获取详细信息的位置,以及jsp页面中的项目用户。

以上代码将生成HTML代码,如

<input type="hidden" name="val0" value="${[Ljava.lang.String;@9700b4}">

在servlet中访问这些值,

String str[]  = request.getParameterValues("va10");
for(String str[]  : va10)
{
  out.println("product values : "+str[]);
}

答案 4 :(得分:0)

根据Ashish,您无法直接访问它。 转换为数组

<% String s[] = request.getAttribute("first_val");
if(s.length>0){
%>
<input value="<%=s[0]%>" name="first_val" type="hidden">
<% } 
else{
// As per your code
}

希望工作顺利