gpt4 book ai didi

java - 直接从 JSF/richfaces 访问基于 java 的 DOM 树

转载 作者:搜寻专家 更新时间:2023-11-01 03:45:27 26 4
gpt4 key购买 nike

基于 this question我还有其他几个问题:

1) 这个问题中提供给 jsf 的 map 实际上是一个数字,所以我现在不确定支持 bean 方法的返回类型现在应该是什么。如果我修改它的当前 Array<String>返回类型为 Array<Map Integer, Map<String, String[]>>> (或 ArrayList<Map Integer, Map<String, String[]>>> ?)是否只是在 jsf 端进一步嵌套迭代器的情况?问题是 Array/ArrayList 不是 Map,我不确定它在 jsf 中的外观。这是正确的吗:

<c:forEach items="#{bean.map}" var="entry">                     <!-- array -->
<c:forEach items="#{entry.value}" var="nentry"> <!-- map -->
<h:outputText value="Key: #{nentry.key}, Values:" /> <!-- integer -->
<c:forEach items="#{nentry.value}" var="nnentry"> <!-- sub map -->
<h:outputText value="Key: #{nnentry.key}, Values:" /> <!-- string -->
<c:forEach items="#{nnentry.value}" var="nnnentry"> <!-- string[] -->
<h:outputText value="#{nnnentry}" />
</c:forEach><br />
</c:forEach><br />
</c:forEach><br />
</c:forEach>

?

2) 我真正存储在此映射中的是从在 Java 端解析的 XML DOM 树中提取的 xpath。我现在想我可以直接从 JSF 访问这个基于 java 的 DOM 树,而不必使用 XPath -> ArrayOfMaps 并返回它。在看起来像这样的 XML 文件中,有没有比使用上述方法更好的方法?:

 <test>                                              
<testid>1</testid>
<testname>myName</testname>

<inst>
<id>1</id>
<src>C:\my\path</src>
<mask>.*\.\w{3}</mask>
<mask>.*\.x</mask>
</inst>

<inst>
<id>2</id>
<src>C:\my\otherpath</src>
<mask>.*\.\w{3}</mask>
<mask>.*\.x</mask>
</inst>
</test>

再次感谢标记

最佳答案

<c:forEach items="#{bean.map}" var="entry">                     <!-- array -->
<c:forEach items="#{entry.value}" var="nentry"> <!-- map -->

这是错误的。 ArrayList 的每次迭代都不会像您想象的那样返回 Map.Entry 对象。它只返回 List 的单个元素(在您的例子中是 Map)。它应该是这样的:

<c:forEach items="#{bean.list}" var="map">                        <!-- array -->
<c:forEach items="#{map}" var="entry"> <!-- map -->


简而言之,c:forEachListObject[] 的迭代如下

<c:forEach items="${array}" var="item">
...
</c:forEach>

最好在原始 Java 代码中解释为

for (Object item : array) {
// ...
}

同时 c:forEachMap 进行迭代,如 previous topic 中所示最好在原始 Java 代码中解释为:

for (Entry<K, V> entry : map.entrySet()) {
K key = entry.getKey(); // ${entry.key}
V value = entry.getValue(); // ${entry.value}
}

关于java - 直接从 JSF/richfaces 访问基于 java 的 DOM 树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2147495/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com