我有一个.jsp,它确定用户可以访问哪些特定内容。它创建一个 XML 文件,该文件由前面的 jsp 读入流中。如何使用读入 char 数组流的 XML 数据填充表?
最佳答案
有很多方法可以从 XML 文件中获取 HTML 表格。最简洁的方法之一是将 XML 解析为可重用的集合 javabeans您将其传递给 JSP,以便您可以使用 JSTL <c:forEach>
在渲染 HTML 表时对其进行迭代。这样,每一层都有自己明确的职责。 Java SE 提供了 JAXB对此非常有帮助。
想象一下您的 XML 如下所示:
<data>
<entry>
<key>foo1</key>
<value>bar1</value>
</entry>
<entry>
<key>foo2</key>
<value>bar2</value>
</entry>
<entry>
<key>foo3</key>
<value>bar3</value>
</entry>
</data>
然后您可以按如下方式创建 JAXB javabean:
@XmlRootElement
public class Data {
@XmlElement(name="entry")
private List<Entry> entries;
public List<Entry> getEntries() {
return entries;
}
public static class Entry {
@XmlElement
private String key;
@XmlElement
private String value;
public String getKey() {
return key;
}
public String getValue() {
return value;
}
}
}
然后你可以将其转换为List<Entry>
如下:
List<Entry> entries = JAXBContext.newInstance(Data.class).createUnmarshaller().unmarshal(inputStream).getEntries();
然后你就可以让你的servlet (或者 JSP?:/)在将请求转发到 JSP 之前将其存储在请求范围中:
request.setAttribute("entries", entries);
最后,您可以在 JSP 中对其进行迭代并将其呈现为 HTML 表格:
<table>
<c:forEach items="${entries}" var="entry">
<tr>
<td><c:out value="${entry.key}" /></td>
<td><c:out value="${entry.value}" /></td>
</tr>
</c:forEach>
</table>
关于java - 如何将从 JSP 请求的 XML 数据格式化为表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7841002/