На основании этого вопроса У меня есть пара других вопросов:
1) карта в этом вопросе, которая сделана доступной для jsf, на самом деле является одной из числа, так что я сейчас не уверен, каким должен быть тип возвращаемого метода backan-компонента. если я изменю его текущий Array<String>
тип возвращаемого значения на Array<Map Integer, Map<String, String[]>>>
(или ArrayList<Map Integer, Map<String, String[]>>>
?), это будет просто случай дальнейшего вложения итератора на стороне jsf? Проблема в том, что Array / ArrayList не является картой, и я не уверен, как это выглядит в 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) то, что я действительно храню на этой карте, это xpath рипы из дерева DOM XML, проанализированного на стороне java. теперь я думаю, что могу получить доступ к этому дереву DOM на основе Java из JSF напрямую, без необходимости использовать 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>
Еще раз спасибо
Mark