我想知道是否可以从jsp向servlet类发送字符串数组。实际上这种情况是我从servlet向jsp发送一个字符串数组,然后我想将这个字符串数组发送到另一个servlet类。例如,
<table border="1">
<tr>
<th>Target Names</th>
</tr>
<c:forEach items="${targetarray}" var="drugtarget">
<tr>
<td>${fn:escapeXml(drugtarget)}</td>
</tr>
</c:forEach>
</table>
这里,targetarray
是我的字符串数组。我现在需要将它发送到另一个servlet类。或者还有另一种方法吗?谢谢。
答案 0 :(得分:1)
HTML只能包含字符序列。 HTTP请求参数只能表示字符序列。你绝对不能传递Java对象。您需要将它们转换为首先基于指定格式唯一表示Java对象的字符序列,以便在服务器端检索它之后将其转换回Java对象。字符序列在Java中由String
类表示。
因此,基本上,您需要先将String[]
转换为String
,然后再将其打印到HTML中。您可以使用HTML <input type="hidden">
来表示隐藏的请求参数。在将其作为HTTP请求参数获取后,您需要将提交的String
值转换回String[]
。最简单的是,您可以选择逗号分隔值(CSV)格式为String
表示,也可以选择XML或JSON。
一个完全不同的替代方案,确定Java对象是否相当复杂(例如,Javabean,可能具有更多嵌套的Javabean属性等)是沿着唯一且自动生成的密钥存储对象(例如java.util.UUID
)在会议中。然后你只需要将该唯一密钥作为请求参数传递,以便随后可以根据密钥从会话中获取(删除)。